• Carlos Maiolino's avatar
    ext4: ext4_bread usage audit · 6d1ab10e
    Carlos Maiolino authored
    When ext4_bread() returns NULL and err is set to zero, this means
    there is no phyical block mapped to the specified logical block
    number.  (Previous to commit 90b0a973, err was uninitialized in this
    case, which caused other problems.)
    
    The directory handling routines use ext4_bread() in many places, the
    fact that ext4_bread() now returns NULL with err set to zero could
    cause problems since a number of these functions will simply return
    the value of err if the result of ext4_bread() was the NULL pointer,
    causing the caller of the function to think that the function was
    successful.
    
    Since directories should never contain holes, this case can only
    happen if the file system is corrupted.  This commit audits all of the
    callers of ext4_bread(), and makes sure they do the right thing if a
    hole in a directory is found by ext4_bread().
    
    Some ext4_bread() callers did not need any changes either because they
    already had its own hole detector paths.
    Signed-off-by: default avatarCarlos Maiolino <cmaiolino@redhat.com>
    Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
    6d1ab10e
namei.c 82.6 KB