From 57149a51e1973c29cb9399e8c70510b50405f071 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 23 Jul 2008 21:29:21 -0700 Subject: [PATCH] --- yaml --- r: 105412 b: refs/heads/master c: c019bbc612f6633ede7ed67725cbf68de45ae8a4 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/linux/net.h | 3 +++ trunk/net/socket.c | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index f05ab64c4880..85d7dc333ce0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: aaca0bdca573f3f51ea03139f9c7289541e7bca3 +refs/heads/master: c019bbc612f6633ede7ed67725cbf68de45ae8a4 diff --git a/trunk/include/linux/net.h b/trunk/include/linux/net.h index 3a9b06d4d0fe..39a23af059b4 100644 --- a/trunk/include/linux/net.h +++ b/trunk/include/linux/net.h @@ -102,6 +102,9 @@ enum sock_type { /* Flags for socket, socketpair, paccept */ #define SOCK_CLOEXEC O_CLOEXEC +#ifndef SOCK_NONBLOCK +#define SOCK_NONBLOCK O_NONBLOCK +#endif #endif /* ARCH_HAS_SOCKET_TYPES */ diff --git a/trunk/net/socket.c b/trunk/net/socket.c index a0ce8ad72252..d163adff95bf 100644 --- a/trunk/net/socket.c +++ b/trunk/net/socket.c @@ -69,6 +69,7 @@ #include #include #include +#include #include #include #include @@ -1504,6 +1505,7 @@ long do_accept(int fd, struct sockaddr __user *upeer_sockaddr, goto out_put; } +#ifdef HAVE_SET_RESTORE_SIGMASK asmlinkage long sys_paccept(int fd, struct sockaddr __user *upeer_sockaddr, int __user *upeer_addrlen, const sigset_t __user *sigmask, @@ -1541,6 +1543,21 @@ asmlinkage long sys_paccept(int fd, struct sockaddr __user *upeer_sockaddr, return ret; } +#else +asmlinkage long sys_paccept(int fd, struct sockaddr __user *upeer_sockaddr, + int __user *upeer_addrlen, + const sigset_t __user *sigmask, + size_t sigsetsize, int flags) +{ + /* The platform does not support restoring the signal mask in the + * return path. So we do not allow using paccept() with a signal + * mask. */ + if (sigmask) + return -EINVAL; + + return do_accept(fd, upeer_sockaddr, upeer_addrlen, flags); +} +#endif asmlinkage long sys_accept(int fd, struct sockaddr __user *upeer_sockaddr, int __user *upeer_addrlen)