On Thu, 2016-07-07 at 12:14 +0800, Ian Kent wrote: > On Sun, 2016-07-03 at 02:24 +0900, Tomohiro Kusumi wrote: > > if (!dentry->d_fsdata) should be testing d_fsdata or ino without !. > > I've added both of these to the list of kernel patches I have, hopefully I'll > be > able to get the needed testing done to send them to Andrew after the next > merge > window. > > But I need to take a closer look at this one though. > > There's another ENOMEM return just above this where ino is not freed. > > So I'm wondering if it should be freed here at all. > > It belongs to the dentry and would get freed using autofs4_dentry_release() on > final dput() and that takes care of additional house keeping too (although a > symlink dentry is a bit different and shouldn't need that extra cleanup). > > What really worries me is that autofs4_free_ino() doesn't set d_fsdata to NULL > so there's a chance of a double free when autofs4_dentry_release() is finally > called. I've removed the free from autofs4_dir_symlink(), it really should be done by d_release() on final dput. > > > > > Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@xxxxxxxxx> > > --- > > fs/autofs4/root.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c > > index 93d3232..5a877bf 100644 > > --- a/fs/autofs4/root.c > > +++ b/fs/autofs4/root.c > > @@ -577,7 +577,7 @@ static int autofs4_dir_symlink(struct inode *dir, > > inode = autofs4_get_inode(dir->i_sb, S_IFLNK | 0555); > > if (!inode) { > > kfree(cp); > > - if (!dentry->d_fsdata) > > + if (ino) > > autofs4_free_ino(ino); > > return -ENOMEM; > > } > -- > To unsubscribe from this list: send the line "unsubscribe autofs" in -- To unsubscribe from this list: send the line "unsubscribe autofs" in