From: Andrew Morton <[EMAIL PROTECTED]> Date: Sat, 28 Jan 2006 17:22:40 -0800
> David, your tree > git+ssh://master.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.17.git > is oopsing all over the place. Reverting "[NET]: Do not lose accepted > socket when -ENFILE/-EMFILE." makes it stop: I just checked in the following fix, thanks for the report. diff-tree e6b303b1b4b890772f9c45f790deb1cfb49e295c (from dc326c4936f41911046b2dc72cbe04053e9680d6) Author: David S. Miller <[EMAIL PROTECTED]> Date: Sun Jan 29 21:08:25 2006 -0800 [NET] sys_accept: Pass correct socket to sock_attach_fd(). Also, make sure "filep" is assigned to on every path through sock_alloc_fd(). Thanks to Andrew Morton for the OOPS trace. Signed-off-by: David S. Miller <[EMAIL PROTECTED]> diff --git a/net/socket.c b/net/socket.c index 8d4032a..1ec0168 100644 --- a/net/socket.c +++ b/net/socket.c @@ -373,11 +373,11 @@ static int sock_alloc_fd(struct file **f if (likely(fd >= 0)) { struct file *file = get_empty_filp(); + *filep = file; if (unlikely(!file)) { put_unused_fd(fd); return -ENFILE; } - *filep = file; } else *filep = NULL; return fd; @@ -1389,12 +1389,12 @@ asmlinkage long sys_accept(int fd, struc __module_get(newsock->ops->owner); newfd = sock_alloc_fd(&newfile); - if (newfd < 0) { + if (unlikely(newfd < 0)) { err = newfd; goto out_release; } - err = sock_attach_fd(sock, newfile); + err = sock_attach_fd(newsock, newfile); if (err < 0) goto out_fd; - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html