diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2007-02-08 15:06:08 -0800 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-02-08 15:06:08 -0800 |
commit | 4387ff75f29412a234d394b0276c2b239d3d3844 (patch) | |
tree | ca338c8c4c1b0c51df8720b712f18871fc74fca8 /net | |
parent | 23bb80d2158cf4421fe239d788fd53cafb151050 (diff) | |
download | lwn-4387ff75f29412a234d394b0276c2b239d3d3844.tar.gz lwn-4387ff75f29412a234d394b0276c2b239d3d3844.zip |
[NET]: Fix net/socket.c warnings.
GCC (correctly) says:
net/socket.c: In function ‘sys_sendto’:
net/socket.c:1510: warning: ‘err’ may be used uninitialized in this function
net/socket.c: In function ‘sys_recvfrom’:
net/socket.c:1571: warning: ‘err’ may be used uninitialized in this function
sock_from_file() either returns filp->private_data or it
sets *err and returns NULL.
Callers return "err" on NULL, but filp->private_data could
be NULL.
Some minor rearrangements of error handling in sys_sendto
and sys_recvfrom solves the issue.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/socket.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/net/socket.c b/net/socket.c index fc74930f1443..5f374e1ff526 100644 --- a/net/socket.c +++ b/net/socket.c @@ -1514,8 +1514,9 @@ asmlinkage long sys_sendto(int fd, void __user *buff, size_t len, struct file *sock_file; sock_file = fget_light(fd, &fput_needed); + err = -EBADF; if (!sock_file) - return -EBADF; + goto out; sock = sock_from_file(sock_file, &err); if (!sock) @@ -1542,6 +1543,7 @@ asmlinkage long sys_sendto(int fd, void __user *buff, size_t len, out_put: fput_light(sock_file, fput_needed); +out: return err; } @@ -1573,12 +1575,13 @@ asmlinkage long sys_recvfrom(int fd, void __user *ubuf, size_t size, int fput_needed; sock_file = fget_light(fd, &fput_needed); + err = -EBADF; if (!sock_file) - return -EBADF; + goto out; sock = sock_from_file(sock_file, &err); if (!sock) - goto out; + goto out_put; msg.msg_control = NULL; msg.msg_controllen = 0; @@ -1597,8 +1600,9 @@ asmlinkage long sys_recvfrom(int fd, void __user *ubuf, size_t size, if (err2 < 0) err = err2; } -out: +out_put: fput_light(sock_file, fput_needed); +out: return err; } |