Loading net/socket.c +14 −17 Original line number Original line Diff line number Diff line Loading @@ -1396,23 +1396,30 @@ SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol, goto out_release_both; goto out_release_both; } } fd2 = sock_alloc_fd(&newfile2, flags & O_CLOEXEC); err = sock_attach_fd(sock1, newfile1, flags & O_NONBLOCK); if (unlikely(fd2 < 0)) { if (unlikely(err < 0)) { err = fd2; put_filp(newfile1); put_filp(newfile1); put_unused_fd(fd1); put_unused_fd(fd1); goto out_release_both; goto out_release_both; } } err = sock_attach_fd(sock1, newfile1, flags & O_NONBLOCK); fd2 = sock_alloc_fd(&newfile2, flags & O_CLOEXEC); if (unlikely(err < 0)) { if (unlikely(fd2 < 0)) { goto out_fd2; err = fd2; fput(newfile1); put_unused_fd(fd1); sock_release(sock2); goto out; } } err = sock_attach_fd(sock2, newfile2, flags & O_NONBLOCK); err = sock_attach_fd(sock2, newfile2, flags & O_NONBLOCK); if (unlikely(err < 0)) { if (unlikely(err < 0)) { put_filp(newfile2); put_unused_fd(fd2); fput(newfile1); fput(newfile1); goto out_fd1; put_unused_fd(fd1); sock_release(sock2); goto out; } } audit_fd_pair(fd1, fd2); audit_fd_pair(fd1, fd2); Loading @@ -1438,16 +1445,6 @@ SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol, sock_release(sock1); sock_release(sock1); out: out: return err; return err; out_fd2: put_filp(newfile1); sock_release(sock1); out_fd1: put_filp(newfile2); sock_release(sock2); put_unused_fd(fd1); put_unused_fd(fd2); goto out; } } /* /* Loading Loading
net/socket.c +14 −17 Original line number Original line Diff line number Diff line Loading @@ -1396,23 +1396,30 @@ SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol, goto out_release_both; goto out_release_both; } } fd2 = sock_alloc_fd(&newfile2, flags & O_CLOEXEC); err = sock_attach_fd(sock1, newfile1, flags & O_NONBLOCK); if (unlikely(fd2 < 0)) { if (unlikely(err < 0)) { err = fd2; put_filp(newfile1); put_filp(newfile1); put_unused_fd(fd1); put_unused_fd(fd1); goto out_release_both; goto out_release_both; } } err = sock_attach_fd(sock1, newfile1, flags & O_NONBLOCK); fd2 = sock_alloc_fd(&newfile2, flags & O_CLOEXEC); if (unlikely(err < 0)) { if (unlikely(fd2 < 0)) { goto out_fd2; err = fd2; fput(newfile1); put_unused_fd(fd1); sock_release(sock2); goto out; } } err = sock_attach_fd(sock2, newfile2, flags & O_NONBLOCK); err = sock_attach_fd(sock2, newfile2, flags & O_NONBLOCK); if (unlikely(err < 0)) { if (unlikely(err < 0)) { put_filp(newfile2); put_unused_fd(fd2); fput(newfile1); fput(newfile1); goto out_fd1; put_unused_fd(fd1); sock_release(sock2); goto out; } } audit_fd_pair(fd1, fd2); audit_fd_pair(fd1, fd2); Loading @@ -1438,16 +1445,6 @@ SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol, sock_release(sock1); sock_release(sock1); out: out: return err; return err; out_fd2: put_filp(newfile1); sock_release(sock1); out_fd1: put_filp(newfile2); sock_release(sock2); put_unused_fd(fd1); put_unused_fd(fd2); goto out; } } /* /* Loading