mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-24 07:31:41 +00:00
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/net/ixgbe/ixgbe_main.c include/net/mac80211.h net/phonet/af_phonet.c
This commit is contained in:
commit
6ab33d5171
120 changed files with 782 additions and 683 deletions
80
net/socket.c
80
net/socket.c
|
@ -1425,8 +1425,8 @@ asmlinkage long sys_listen(int fd, int backlog)
|
|||
* clean when we restucture accept also.
|
||||
*/
|
||||
|
||||
long do_accept(int fd, struct sockaddr __user *upeer_sockaddr,
|
||||
int __user *upeer_addrlen, int flags)
|
||||
asmlinkage long sys_accept4(int fd, struct sockaddr __user *upeer_sockaddr,
|
||||
int __user *upeer_addrlen, int flags)
|
||||
{
|
||||
struct socket *sock, *newsock;
|
||||
struct file *newfile;
|
||||
|
@ -1509,66 +1509,10 @@ out_fd:
|
|||
goto out_put;
|
||||
}
|
||||
|
||||
#if 0
|
||||
#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,
|
||||
size_t sigsetsize, int flags)
|
||||
{
|
||||
sigset_t ksigmask, sigsaved;
|
||||
int ret;
|
||||
|
||||
if (sigmask) {
|
||||
/* XXX: Don't preclude handling different sized sigset_t's. */
|
||||
if (sigsetsize != sizeof(sigset_t))
|
||||
return -EINVAL;
|
||||
if (copy_from_user(&ksigmask, sigmask, sizeof(ksigmask)))
|
||||
return -EFAULT;
|
||||
|
||||
sigdelsetmask(&ksigmask, sigmask(SIGKILL)|sigmask(SIGSTOP));
|
||||
sigprocmask(SIG_SETMASK, &ksigmask, &sigsaved);
|
||||
}
|
||||
|
||||
ret = do_accept(fd, upeer_sockaddr, upeer_addrlen, flags);
|
||||
|
||||
if (ret < 0 && signal_pending(current)) {
|
||||
/*
|
||||
* Don't restore the signal mask yet. Let do_signal() deliver
|
||||
* the signal on the way back to userspace, before the signal
|
||||
* mask is restored.
|
||||
*/
|
||||
if (sigmask) {
|
||||
memcpy(¤t->saved_sigmask, &sigsaved,
|
||||
sizeof(sigsaved));
|
||||
set_restore_sigmask();
|
||||
}
|
||||
} else if (sigmask)
|
||||
sigprocmask(SIG_SETMASK, &sigsaved, NULL);
|
||||
|
||||
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
|
||||
#endif
|
||||
|
||||
asmlinkage long sys_accept(int fd, struct sockaddr __user *upeer_sockaddr,
|
||||
int __user *upeer_addrlen)
|
||||
{
|
||||
return do_accept(fd, upeer_sockaddr, upeer_addrlen, 0);
|
||||
return sys_accept4(fd, upeer_sockaddr, upeer_addrlen, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2095,7 +2039,7 @@ static const unsigned char nargs[19]={
|
|||
AL(0),AL(3),AL(3),AL(3),AL(2),AL(3),
|
||||
AL(3),AL(3),AL(4),AL(4),AL(4),AL(6),
|
||||
AL(6),AL(2),AL(5),AL(5),AL(3),AL(3),
|
||||
AL(6)
|
||||
AL(4)
|
||||
};
|
||||
|
||||
#undef AL
|
||||
|
@ -2114,7 +2058,7 @@ asmlinkage long sys_socketcall(int call, unsigned long __user *args)
|
|||
unsigned long a0, a1;
|
||||
int err;
|
||||
|
||||
if (call < 1 || call > SYS_PACCEPT)
|
||||
if (call < 1 || call > SYS_ACCEPT4)
|
||||
return -EINVAL;
|
||||
|
||||
/* copy_from_user should be SMP safe. */
|
||||
|
@ -2142,9 +2086,8 @@ asmlinkage long sys_socketcall(int call, unsigned long __user *args)
|
|||
err = sys_listen(a0, a1);
|
||||
break;
|
||||
case SYS_ACCEPT:
|
||||
err =
|
||||
do_accept(a0, (struct sockaddr __user *)a1,
|
||||
(int __user *)a[2], 0);
|
||||
err = sys_accept4(a0, (struct sockaddr __user *)a1,
|
||||
(int __user *)a[2], 0);
|
||||
break;
|
||||
case SYS_GETSOCKNAME:
|
||||
err =
|
||||
|
@ -2191,12 +2134,9 @@ asmlinkage long sys_socketcall(int call, unsigned long __user *args)
|
|||
case SYS_RECVMSG:
|
||||
err = sys_recvmsg(a0, (struct msghdr __user *)a1, a[2]);
|
||||
break;
|
||||
case SYS_PACCEPT:
|
||||
err =
|
||||
sys_paccept(a0, (struct sockaddr __user *)a1,
|
||||
(int __user *)a[2],
|
||||
(const sigset_t __user *) a[3],
|
||||
a[4], a[5]);
|
||||
case SYS_ACCEPT4:
|
||||
err = sys_accept4(a0, (struct sockaddr __user *)a1,
|
||||
(int __user *)a[2], a[3]);
|
||||
break;
|
||||
default:
|
||||
err = -EINVAL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue