Re: [RFC][PATCH 20/27] unix_find_other() elevate write count for touch_atime()

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

 



On Wed, Jun 07, 2006 at 05:10:30PM -0700, Dave Hansen wrote:
> 
> 
> Signed-off-by: Dave Hansen <haveblue@xxxxxxxxxx>
> ---
> 
>  lxc-dave/net/unix/af_unix.c |   16 ++++++++++++----
>  1 files changed, 12 insertions(+), 4 deletions(-)
> 
> diff -puN net/unix/af_unix.c~elevate-writers-opens-part4 net/unix/af_unix.c
> --- lxc/net/unix/af_unix.c~elevate-writers-opens-part4	2006-06-07 16:53:24.000000000 -0700
> +++ lxc-dave/net/unix/af_unix.c	2006-06-07 16:53:24.000000000 -0700
> @@ -676,21 +676,27 @@ static struct sock *unix_find_other(stru
>  		err = path_lookup(sunname->sun_path, LOOKUP_FOLLOW, &nd);
>  		if (err)
>  			goto fail;
> +
> +		err = mnt_want_write(nd.mnt);
> +		if (err)
> +			goto put_path_fail;
> +
>  		err = vfs_permission(&nd, MAY_WRITE);
>  		if (err)
> -			goto put_fail;
> +			goto put_write_fail;

mnt_drop_write_fail maybe?

btw, IMHO *drop_write* would be enough for
the error labels, no need for the mnt part

best,
Herbert

>  		err = -ECONNREFUSED;
>  		if (!S_ISSOCK(nd.dentry->d_inode->i_mode))
> -			goto put_fail;
> +			goto put_write_fail;
>  		u=unix_find_socket_byinode(nd.dentry->d_inode);
>  		if (!u)
> -			goto put_fail;
> +			goto put_write_fail;
>  
>  		if (u->sk_type == type)
>  			touch_atime(nd.mnt, nd.dentry);
>  
>  		path_release(&nd);
> +		mnt_drop_write(nd.mnt);
>  
>  		err=-EPROTOTYPE;
>  		if (u->sk_type != type) {
> @@ -710,7 +716,9 @@ static struct sock *unix_find_other(stru
>  	}
>  	return u;
>  
> -put_fail:
> +put_write_fail:
> +	mnt_drop_write(nd.mnt);
> +put_path_fail:
>  	path_release(&nd);
>  fail:
>  	*error=err;
> _
-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux