Re: [PATCH 2/2] autofs: Fix conditional to kfree dentry data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Filesystem Development]     [Linux Ext4]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux