• Jakob Koschel's avatar
    f2fs: fix dereference of stale list iterator after loop body · 2aaf51dd
    Jakob Koschel authored
    The list iterator variable will be a bogus pointer if no break was hit.
    Dereferencing it (cur->page in this case) could load an out-of-bounds/undefined
    value making it unsafe to use that in the comparision to determine if the
    specific element was found.
    
    Since 'cur->page' *can* be out-ouf-bounds it cannot be guaranteed that
    by chance (or intention of an attacker) it matches the value of 'page'
    even though the correct element was not found.
    
    This is fixed by using a separate list iterator variable for the loop
    and only setting the original variable if a suitable element was found.
    Then determing if the element was found is simply checking if the
    variable is set.
    
    Fixes: 8c242db9 ("f2fs: fix stale ATOMIC_WRITTEN_PAGE private pointer")
    Signed-off-by: default avatarJakob Koschel <jakobkoschel@gmail.com>
    Reviewed-by: default avatarChao Yu <chao@kernel.org>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    2aaf51dd
segment.c 136 KB