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>
        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;