From: Al Viro <v...@zeniv.linux.org.uk>

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 <v...@zeniv.linux.org.uk>
---
 fs/namei.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/namei.c b/fs/namei.c
index 4303404..998c3c2 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -750,7 +750,8 @@ static inline void put_link(struct nameidata *nd)
        struct inode *inode = last->inode;
        if (last->cookie && inode->i_op->put_link)
                inode->i_op->put_link(inode, last->cookie);
-       path_put(&last->link);
+       if (!(nd->flags & LOOKUP_RCU))
+               path_put(&last->link);
 }
 
 int sysctl_protected_symlinks __read_mostly = 0;
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to