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

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

 



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.

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



[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