mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-26 08:31:13 +00:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1480 commits) bonding: enable netpoll without checking link status xfrm: Refcount destination entry on xfrm_lookup net: introduce rx_handler results and logic around that bonding: get rid of IFF_SLAVE_INACTIVE netdev->priv_flag bonding: wrap slave state work net: get rid of multiple bond-related netdevice->priv_flags bonding: register slave pointer for rx_handler be2net: Bump up the version number be2net: Copyright notice change. Update to Emulex instead of ServerEngines e1000e: fix kconfig for crc32 dependency netfilter ebtables: fix xt_AUDIT to work with ebtables xen network backend driver bonding: Improve syslog message at device creation time bonding: Call netif_carrier_off after register_netdevice bonding: Incorrect TX queue offset net_sched: fix ip_tos2prio xfrm: fix __xfrm_route_forward() be2net: Fix UDP packet detected status in RX compl Phonet: fix aligned-mode pipe socket buffer header reserve netxen: support for GbE port settings ... Fix up conflicts in drivers/staging/brcm80211/brcmsmac/wl_mac80211.c with the staging updates.
This commit is contained in:
commit
7a6362800c
1143 changed files with 119354 additions and 38141 deletions
|
@ -1124,7 +1124,7 @@ restart:
|
|||
|
||||
/* Latch our state.
|
||||
|
||||
It is tricky place. We need to grab write lock and cannot
|
||||
It is tricky place. We need to grab our state lock and cannot
|
||||
drop lock on peer. It is dangerous because deadlock is
|
||||
possible. Connect to self case and simultaneous
|
||||
attempt to connect are eliminated by checking socket
|
||||
|
@ -1171,7 +1171,7 @@ restart:
|
|||
newsk->sk_type = sk->sk_type;
|
||||
init_peercred(newsk);
|
||||
newu = unix_sk(newsk);
|
||||
newsk->sk_wq = &newu->peer_wq;
|
||||
RCU_INIT_POINTER(newsk->sk_wq, &newu->peer_wq);
|
||||
otheru = unix_sk(other);
|
||||
|
||||
/* copy address information from listening to new sock*/
|
||||
|
@ -1475,6 +1475,12 @@ restart:
|
|||
goto out_free;
|
||||
}
|
||||
|
||||
if (sk_filter(other, skb) < 0) {
|
||||
/* Toss the packet but do not return any error to the sender */
|
||||
err = len;
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
unix_state_lock(other);
|
||||
err = -EPERM;
|
||||
if (!unix_may_send(sk, other))
|
||||
|
@ -1561,7 +1567,6 @@ static int unix_stream_sendmsg(struct kiocb *kiocb, struct socket *sock,
|
|||
struct sock_iocb *siocb = kiocb_to_siocb(kiocb);
|
||||
struct sock *sk = sock->sk;
|
||||
struct sock *other = NULL;
|
||||
struct sockaddr_un *sunaddr = msg->msg_name;
|
||||
int err, size;
|
||||
struct sk_buff *skb;
|
||||
int sent = 0;
|
||||
|
@ -1584,7 +1589,6 @@ static int unix_stream_sendmsg(struct kiocb *kiocb, struct socket *sock,
|
|||
err = sk->sk_state == TCP_ESTABLISHED ? -EISCONN : -EOPNOTSUPP;
|
||||
goto out_err;
|
||||
} else {
|
||||
sunaddr = NULL;
|
||||
err = -ENOTCONN;
|
||||
other = unix_peer(sk);
|
||||
if (!other)
|
||||
|
@ -1987,36 +1991,38 @@ static int unix_shutdown(struct socket *sock, int mode)
|
|||
|
||||
mode = (mode+1)&(RCV_SHUTDOWN|SEND_SHUTDOWN);
|
||||
|
||||
if (mode) {
|
||||
unix_state_lock(sk);
|
||||
sk->sk_shutdown |= mode;
|
||||
other = unix_peer(sk);
|
||||
if (other)
|
||||
sock_hold(other);
|
||||
unix_state_unlock(sk);
|
||||
sk->sk_state_change(sk);
|
||||
if (!mode)
|
||||
return 0;
|
||||
|
||||
if (other &&
|
||||
(sk->sk_type == SOCK_STREAM || sk->sk_type == SOCK_SEQPACKET)) {
|
||||
unix_state_lock(sk);
|
||||
sk->sk_shutdown |= mode;
|
||||
other = unix_peer(sk);
|
||||
if (other)
|
||||
sock_hold(other);
|
||||
unix_state_unlock(sk);
|
||||
sk->sk_state_change(sk);
|
||||
|
||||
int peer_mode = 0;
|
||||
if (other &&
|
||||
(sk->sk_type == SOCK_STREAM || sk->sk_type == SOCK_SEQPACKET)) {
|
||||
|
||||
if (mode&RCV_SHUTDOWN)
|
||||
peer_mode |= SEND_SHUTDOWN;
|
||||
if (mode&SEND_SHUTDOWN)
|
||||
peer_mode |= RCV_SHUTDOWN;
|
||||
unix_state_lock(other);
|
||||
other->sk_shutdown |= peer_mode;
|
||||
unix_state_unlock(other);
|
||||
other->sk_state_change(other);
|
||||
if (peer_mode == SHUTDOWN_MASK)
|
||||
sk_wake_async(other, SOCK_WAKE_WAITD, POLL_HUP);
|
||||
else if (peer_mode & RCV_SHUTDOWN)
|
||||
sk_wake_async(other, SOCK_WAKE_WAITD, POLL_IN);
|
||||
}
|
||||
if (other)
|
||||
sock_put(other);
|
||||
int peer_mode = 0;
|
||||
|
||||
if (mode&RCV_SHUTDOWN)
|
||||
peer_mode |= SEND_SHUTDOWN;
|
||||
if (mode&SEND_SHUTDOWN)
|
||||
peer_mode |= RCV_SHUTDOWN;
|
||||
unix_state_lock(other);
|
||||
other->sk_shutdown |= peer_mode;
|
||||
unix_state_unlock(other);
|
||||
other->sk_state_change(other);
|
||||
if (peer_mode == SHUTDOWN_MASK)
|
||||
sk_wake_async(other, SOCK_WAKE_WAITD, POLL_HUP);
|
||||
else if (peer_mode & RCV_SHUTDOWN)
|
||||
sk_wake_async(other, SOCK_WAKE_WAITD, POLL_IN);
|
||||
}
|
||||
if (other)
|
||||
sock_put(other);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue