• Tom Rix's avatar
    jffs2: fix use after free in jffs2_sum_write_data() · 19646447
    Tom Rix authored
    clang static analysis reports this problem
    
    fs/jffs2/summary.c:794:31: warning: Use of memory after it is freed
                    c->summary->sum_list_head = temp->u.next;
                                                ^~~~~~~~~~~~
    
    In jffs2_sum_write_data(), in a loop summary data is handles a node at
    a time.  When it has written out the node it is removed the summary list,
    and the node is deleted.  In the corner case when a
    JFFS2_FEATURE_RWCOMPAT_COPY is seen, a call is made to
    jffs2_sum_disable_collecting().  jffs2_sum_disable_collecting() deletes
    the whole list which conflicts with the loop's deleting the list by parts.
    
    To preserve the old behavior of stopping the write midway, bail out of
    the loop after disabling summary collection.
    
    Fixes: 6171586a ("[JFFS2] Correct handling of JFFS2_FEATURE_RWCOMPAT_COPY nodes.")
    Signed-off-by: default avatarTom Rix <trix@redhat.com>
    Reviewed-by: default avatarNathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
    19646447
summary.c 23.7 KB