]> git.baikalelectronics.ru Git - kernel.git/commit
minimal fix for do_filp_open() race
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 4 Mar 2011 18:14:21 +0000 (13:14 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 4 Mar 2011 18:14:21 +0000 (13:14 -0500)
commit2ce42e617a66eb303bfb38158727eb57aaa0bcff
tree29d1e5d2aad63b798e880011fc527bb4bab63e40
parentf1d6e61a9cebd640264131dd1cb3cad5133ce8fe
minimal fix for do_filp_open() race

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: Al Viro <viro@zeniv.linux.org.uk>
fs/namei.c