Files
linux-apfs/fs
Al Viro ba65dc5ef1 much milder d_walk() race
d_walk() relies upon the tree not getting rearranged under it without
rename_lock being touched.  And we do grab rename_lock around the
places that change the tree topology.  Unfortunately, branch reordering
is just as bad from d_walk() POV and we have two places that do it
without touching rename_lock - one in handling of cursors (for ramfs-style
directories) and another in autofs.  autofs one is a separate story; this
commit deals with the cursors.
	* mark cursor dentries explicitly at allocation time
	* make __dentry_kill() leave ->d_child.next pointing to the next
non-cursor sibling, making sure that it won't be moved around unnoticed
before the parent is relocked on ascend-to-parent path in d_walk().
	* make d_walk() skip cursors explicitly; strictly speaking it's
not necessary (all callbacks we pass to d_walk() are no-ops on cursors),
but it makes analysis easier.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2016-06-10 11:32:47 -04:00
..
2016-05-27 15:26:11 -07:00
2016-05-20 17:58:30 -07:00
2016-05-23 17:04:14 -07:00
2016-05-23 17:04:14 -07:00
2016-04-26 12:00:48 -04:00
2016-05-23 17:04:14 -07:00
2016-06-07 22:07:09 -04:00
2016-06-10 11:32:47 -04:00
2016-06-10 11:32:47 -04:00
2016-05-23 17:04:14 -07:00
2016-06-10 11:32:47 -04:00
2016-06-07 21:53:51 -04:00
2016-04-18 11:18:55 +02:00