summaryrefslogtreecommitdiff
path: root/include/linux/namei.h
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2011-03-18 08:55:38 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2011-03-18 08:55:38 -0400
commitb12cea9198fa99ffd3de1776c323bc7464d26b44 (patch)
tree3ae5818b2690e45c8a71432ed681751683091287 /include/linux/namei.h
parent27cb1572e3e6bb1f8cf6bb3d74c914a87b131792 (diff)
downloadlwn-b12cea9198fa99ffd3de1776c323bc7464d26b44.tar.gz
lwn-b12cea9198fa99ffd3de1776c323bc7464d26b44.zip
change the locking order for namespace_sem
Have it nested inside ->i_mutex. Instead of using follow_down() under namespace_sem, followed by grabbing i_mutex and checking that mountpoint to be is not dead, do the following: grab i_mutex check that it's not dead grab namespace_sem see if anything is mounted there if not, we've won otherwise drop locks put_path on what we had replace with what's mounted retry everything with new mountpoint to be New helper (lock_mount()) does that. do_add_mount(), do_move_mount(), do_loopback() and pivot_root() switched to it; in case of the last two that eliminates a race we used to have - original code didn't do follow_down(). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux/namei.h')
0 files changed, 0 insertions, 0 deletions