diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2015-05-07 20:32:22 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2015-05-11 08:13:13 -0400 |
commit | 6548fae2eca6b66c7257af6663fdbdf5a50745fd (patch) | |
tree | 9bd27e6603841fa48feca5a053b8c8b1ecd5129c /fs/namei.c | |
parent | ecc087ff14352aed52b8e775b4511e7f9cfc64ec (diff) |
namei: make put_link() RCU-safe
very simple - just make path_put() conditional on !RCU.
Note that right now it doesn't get called in RCU mode -
we leave it before getting anything into stack.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/namei.c')
-rw-r--r-- | fs/namei.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/namei.c b/fs/namei.c index 43034046a0e1..998c3c2c9488 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
@@ -750,7 +750,8 @@ static inline void put_link(struct nameidata *nd) | |||
750 | struct inode *inode = last->inode; | 750 | struct inode *inode = last->inode; |
751 | if (last->cookie && inode->i_op->put_link) | 751 | if (last->cookie && inode->i_op->put_link) |
752 | inode->i_op->put_link(inode, last->cookie); | 752 | inode->i_op->put_link(inode, last->cookie); |
753 | path_put(&last->link); | 753 | if (!(nd->flags & LOOKUP_RCU)) |
754 | path_put(&last->link); | ||
754 | } | 755 | } |
755 | 756 | ||
756 | int sysctl_protected_symlinks __read_mostly = 0; | 757 | int sysctl_protected_symlinks __read_mostly = 0; |