On Fri, Jan 14, 2011 at 4:28 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > On Fri, Jan 14, 2011 at 03:09:10PM +1100, Nick Piggin wrote: > >> > + ? ? ? ? ? ? ? ? ? ? ? struct dentry *i = path.dentry->d_inode; >> > + ? ? ? ? ? ? ? ? ? ? ? if (!IS_ERR(cookie) && i->i_op->put_link) >> > + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? i->i_op->put_link(path.dentry, &nd, cookie); >> > ? ? ? ? ? ? ? ? ? ? ? ?/* nd.path had been dropped */ >> > ? ? ? ? ? ? ? ? ? ? ? ?nd.path = path; >> > ? ? ? ? ? ? ? ? ? ? ? ?goto out_path; >> >> It should be the inode we followed, rather than the inode of the >> new path, I think. > > And that's what the first argument of __do_follow_link() is. I'm actually > tempted to rename it from path to symlink and make it const to clarify > the things a bit. Yes I was completely wrong there, thanks again for another good catch. I'll merge this in the vfs-scale branch, and ask to merge if there are no objections.
Attachment:
fs-namei-putlink-fix.patch
Description: Binary data