Patchwork [1/1] af_unix.c: fix the compile warning in unix_bind

login
register
mail settings
Submitter Jing Wang
Date Oct. 26, 2012, 2:48 a.m.
Message ID <1351219727-6085-1-git-send-email-windsdaemon@gmail.com>
Download mbox | patch
Permalink /patch/194348/
State Changes Requested
Delegated to: David Miller
Headers show

Comments

Jing Wang - Oct. 26, 2012, 2:48 a.m.
Signed-off-by: Jing Wang <windsdaemon@gmail.com>
---
 net/unix/af_unix.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)
David Miller - Oct. 26, 2012, 3:16 a.m.
From: Jing Wang <windsdaemon@gmail.com>
Date: Fri, 26 Oct 2012 10:48:47 +0800

> 
> Signed-off-by: Jing Wang <windsdaemon@gmail.com>

What compile warning?  You need to describe what problem
you are solving, rather than assume we can figure it out
by reading your patch.

> -
> +

This doesn't do anything and should be in your patch.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jing Wang - Oct. 26, 2012, 3:24 a.m.
Thanks for your review and i'm sorry about this, the warning is :

CC net/unix/af_unix.o
net/unix/af_unix.c: In function 'unix_bind':
net/unix/af_unix.c:895: warning: 'path.dentry' may be used uninitialized 
in this function
net/unix/af_unix.c:895: warning: 'path.mnt' may be used uninitialized in 
this function


于 2012年10月26日 11:16, David Miller 写道:
> From: Jing Wang <windsdaemon@gmail.com>
> Date: Fri, 26 Oct 2012 10:48:47 +0800
>
>> Signed-off-by: Jing Wang <windsdaemon@gmail.com>
> What compile warning?  You need to describe what problem
> you are solving, rather than assume we can figure it out
> by reading your patch.
>
>> -
>> +
> This doesn't do anything and should be in your patch.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eric W. Biederman - Oct. 28, 2012, 5:54 a.m.
Jing Wang <windsdaemon@gmail.com> writes:

> Signed-off-by: Jing Wang <windsdaemon@gmail.com>
> ---
>  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
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

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