Messages in this thread | | | Date | Thu, 25 Oct 2007 14:44:52 -0400 | From | Chuck Ebbert <> | Subject | Re: BUG in sys_socketpair |
| |
On 10/25/2007 10:11 AM, Rich Paul wrote: > In 2.6.23, there seems to be a minor bug in sys_socketpair. When the > calls to sock_alloc_fd fail, it aborts the routine, but it returns the > variable err, which is not set in this case. > > The result is a silent failure if you have too many files open and call > socketpair. > > Here is a simple UNTESTED patch (not even compiled) which should resolve the > issue. > > > --- net/socket.c.orig 2007-10-25 10:03:56.000000000 -0400 > +++ net/socket.c 2007-10-25 10:04:00.000000000 -0400 > @@ -1245,11 +1245,14 @@ > 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; >
Should be "err = fd1" (spaces), otherwise looks good.
Original did:
err = sock_map_fd(sock1); if (err < 0) goto out_release_both; fd1 = err; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |