[NET]: Fix error reporting in sys_socketpair().
authorDavid S. Miller <davem@sunset.davemloft.net>
Tue, 30 Oct 2007 04:54:02 +0000 (21:54 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Tue, 30 Oct 2007 05:37:34 +0000 (22:37 -0700)
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>
net/socket.c

index 540013ea86206e0aeb40d567fc6f1482f6238ba0..5d879fd3d01dcaaadfe74a7032855554cbc4ad12 100644 (file)
@@ -1250,11 +1250,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;