summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorDavid Miller <davem@davemloft.net>2007-11-13 00:02:56 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2007-11-21 09:25:54 -0800
commit2c41b3c3f54193a93284ca314784d1c6da39ecdc (patch)
tree2472146baf4f5b836b6cf29d1063756350f2c6ff /net
parentd6eb5c86ed40fe57e411c4ee72b38d0a83642302 (diff)
Fix error returns in sys_socketpair()
patch bf3c23d171e35e6e168074a1514b0acd59cfd81a in mainline. [NET]: Fix error reporting in sys_socketpair(). If either of the two sock_alloc_fd() calls fail, we forget to update 'err' and thus we'll erroneously return zero in these cases. Based upon a report and patch from Rich Paul, and commentary from Chuck Ebbert. Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'net')
-rw-r--r--net/socket.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/socket.c b/net/socket.c
index 48bd793ecc1c..8211578517b3 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -1246,11 +1246,14 @@ asmlinkage long sys_socketpair(int family, int type, int protocol,
goto out_release_both;
fd1 = sock_alloc_fd(&newfile1);
- if (unlikely(fd1 < 0))
+ if (unlikely(fd1 < 0)) {
+ err = fd1;
goto out_release_both;
+ }
fd2 = sock_alloc_fd(&newfile2);
if (unlikely(fd2 < 0)) {
+ err = fd2;
put_filp(newfile1);
put_unused_fd(fd1);
goto out_release_both;