• Al Viro's avatar
    minimal fix for do_filp_open() race · 1858efd4
    Al Viro authored
    failure exits on the no-O_CREAT side of do_filp_open() merge with
    those of O_CREAT one; unfortunately, if do_path_lookup() returns
    -ESTALE, we'll get out_filp:, notice that we are about to return
    -ESTALE without having trying to create the sucker with LOOKUP_REVAL
    and jump right into the O_CREAT side of code.  And proceed to try
    and create a file.  Usually that'll fail with -ESTALE again, but
    we can race and get that attempt of pathname resolution to succeed.
    
    open() without O_CREAT really shouldn't end up creating files, races
    or not.  The real fix is to rearchitect the whole do_filp_open(),
    but for now splitting the failure exits will do.
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    1858efd4
namei.c 87.9 KB