ovl: fix remove/copy-up race
authorMiklos Szeredi <mszeredi@suse.cz>
Thu, 20 Nov 2014 15:39:59 +0000 (16:39 +0100)
committerMiklos Szeredi <mszeredi@suse.cz>
Thu, 20 Nov 2014 15:39:59 +0000 (16:39 +0100)
commita105d685a8483985a01776411de191a726b48132
tree4296cad5216bb6b71ee417041198db32e7abad14
parentef94b1864d1ed5be54376404bb23d22ed0481feb
ovl: fix remove/copy-up race

ovl_remove_and_whiteout() needs to check if upper dentry exists or not
after having locked upper parent directory.

Previously we used a "type" value computed before locking the upper parent
directory, which is susceptible to racing with copy-up.

There's a similar check in ovl_check_empty_and_clear().  This one is not
actually racy, since copy-up doesn't change the "emptyness" property of a
directory.  Add a comment to this effect, and check the existence of upper
dentry locally to make the code cleaner.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
fs/overlayfs/dir.c