Subject: Re: [PATCH 1/1] af_unix.c: fix the compile warning in unix_bind

From: [email-masked] (Eric W. Biederman)
Date: Sat, 27 Oct 2012 22:54:26 -0700

Jing Wang <[email-masked]> writes:

> Signed-off-by: Jing Wang <[email-masked]>
> ---
>  net/unix/af_unix.c |    9 ++++++---
>  1 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
> index 5b5c876..3f7d9d5 100644
> --- a/net/unix/af_unix.c
> +++ b/net/unix/af_unix.c
> @@ -860,6 +860,8 @@ static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
>  	unsigned int hash;
>  	struct unix_address *addr;
>  	struct hlist_head *list;
> +	struct path path;
> +	umode_t mode;

This code motion to the top level in the function is also wrong.

>  	err = -EINVAL;
>  	if (sunaddr->sun_family != AF_UNIX)
> @@ -890,11 +892,12 @@ static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
>  	addr->len = addr_len;
>  	addr->hash = hash ^ sk->sk_type;
>  	atomic_set(&addr->refcnt, 1);
> -
> +
>  	if (sun_path[0]) {
> -		struct path path;
> -		umode_t mode = S_IFSOCK |
> +		mode = S_IFSOCK |
>  		       (SOCK_INODE(sock)->i_mode & ~current_umask());
> +
> +		memset(&path, 0, sizeof(path));
>  		err = unix_mknod(sun_path, mode, &path);
>  		if (err) {
>  			if (err == -EEXIST)

Eric