mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
All three conflicts were cases of simple overlapping changes. Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
commit
6abdd5f593
468 changed files with 5386 additions and 2127 deletions
|
|
@ -249,7 +249,7 @@ static inline unsigned long get_index(t_key key, struct key_vector *kv)
|
|||
* index into the parent's child array. That is, they will be used to find
|
||||
* 'n' among tp's children.
|
||||
*
|
||||
* The bits from (n->pos + n->bits) to (tn->pos - 1) - "S" - are skipped bits
|
||||
* The bits from (n->pos + n->bits) to (tp->pos - 1) - "S" - are skipped bits
|
||||
* for the node n.
|
||||
*
|
||||
* All the bits we have seen so far are significant to the node n. The rest
|
||||
|
|
@ -258,7 +258,7 @@ static inline unsigned long get_index(t_key key, struct key_vector *kv)
|
|||
* The bits from (n->pos) to (n->pos + n->bits - 1) - "C" - are the index into
|
||||
* n's child array, and will of course be different for each child.
|
||||
*
|
||||
* The rest of the bits, from 0 to (n->pos + n->bits), are completely unknown
|
||||
* The rest of the bits, from 0 to (n->pos -1) - "u" - are completely unknown
|
||||
* at this point.
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -73,9 +73,11 @@ void iptunnel_xmit(struct sock *sk, struct rtable *rt, struct sk_buff *skb,
|
|||
skb_dst_set(skb, &rt->dst);
|
||||
memset(IPCB(skb), 0, sizeof(*IPCB(skb)));
|
||||
|
||||
if (skb_iif && proto == IPPROTO_UDP) {
|
||||
/* Arrived from an ingress interface and got udp encapuslated.
|
||||
* The encapsulated network segment length may exceed dst mtu.
|
||||
if (skb_iif && !(df & htons(IP_DF))) {
|
||||
/* Arrived from an ingress interface, got encapsulated, with
|
||||
* fragmentation of encapulating frames allowed.
|
||||
* If skb is gso, the resulting encapsulated network segments
|
||||
* may exceed dst mtu.
|
||||
* Allow IP Fragmentation of segments.
|
||||
*/
|
||||
IPCB(skb)->flags |= IPSKB_FRAG_SEGS;
|
||||
|
|
|
|||
|
|
@ -3182,7 +3182,6 @@ int tcp_abort(struct sock *sk, int err)
|
|||
local_bh_enable();
|
||||
return 0;
|
||||
}
|
||||
sock_gen_put(sk);
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
|
|
@ -3211,7 +3210,6 @@ int tcp_abort(struct sock *sk, int err)
|
|||
bh_unlock_sock(sk);
|
||||
local_bh_enable();
|
||||
release_sock(sk);
|
||||
sock_put(sk);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tcp_abort);
|
||||
|
|
|
|||
|
|
@ -54,11 +54,16 @@ static int tcp_diag_destroy(struct sk_buff *in_skb,
|
|||
{
|
||||
struct net *net = sock_net(in_skb->sk);
|
||||
struct sock *sk = inet_diag_find_one_icsk(net, &tcp_hashinfo, req);
|
||||
int err;
|
||||
|
||||
if (IS_ERR(sk))
|
||||
return PTR_ERR(sk);
|
||||
|
||||
return sock_diag_destroy(sk, ECONNABORTED);
|
||||
err = sock_diag_destroy(sk, ECONNABORTED);
|
||||
|
||||
sock_gen_put(sk);
|
||||
|
||||
return err;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -814,8 +814,14 @@ static void tcp_v4_reqsk_send_ack(const struct sock *sk, struct sk_buff *skb,
|
|||
u32 seq = (sk->sk_state == TCP_LISTEN) ? tcp_rsk(req)->snt_isn + 1 :
|
||||
tcp_sk(sk)->snd_nxt;
|
||||
|
||||
/* RFC 7323 2.3
|
||||
* The window field (SEG.WND) of every outgoing segment, with the
|
||||
* exception of <SYN> segments, MUST be right-shifted by
|
||||
* Rcv.Wind.Shift bits:
|
||||
*/
|
||||
tcp_v4_send_ack(sock_net(sk), skb, seq,
|
||||
tcp_rsk(req)->rcv_nxt, req->rsk_rcv_wnd,
|
||||
tcp_rsk(req)->rcv_nxt,
|
||||
req->rsk_rcv_wnd >> inet_rsk(req)->rcv_wscale,
|
||||
tcp_time_stamp,
|
||||
req->ts_recent,
|
||||
0,
|
||||
|
|
|
|||
|
|
@ -1183,13 +1183,13 @@ out:
|
|||
* @sk: socket
|
||||
*
|
||||
* Drops all bad checksum frames, until a valid one is found.
|
||||
* Returns the length of found skb, or 0 if none is found.
|
||||
* Returns the length of found skb, or -1 if none is found.
|
||||
*/
|
||||
static unsigned int first_packet_length(struct sock *sk)
|
||||
static int first_packet_length(struct sock *sk)
|
||||
{
|
||||
struct sk_buff_head list_kill, *rcvq = &sk->sk_receive_queue;
|
||||
struct sk_buff *skb;
|
||||
unsigned int res;
|
||||
int res;
|
||||
|
||||
__skb_queue_head_init(&list_kill);
|
||||
|
||||
|
|
@ -1204,7 +1204,7 @@ static unsigned int first_packet_length(struct sock *sk)
|
|||
__skb_unlink(skb, rcvq);
|
||||
__skb_queue_tail(&list_kill, skb);
|
||||
}
|
||||
res = skb ? skb->len : 0;
|
||||
res = skb ? skb->len : -1;
|
||||
spin_unlock_bh(&rcvq->lock);
|
||||
|
||||
if (!skb_queue_empty(&list_kill)) {
|
||||
|
|
@ -1233,7 +1233,7 @@ int udp_ioctl(struct sock *sk, int cmd, unsigned long arg)
|
|||
|
||||
case SIOCINQ:
|
||||
{
|
||||
unsigned int amount = first_packet_length(sk);
|
||||
int amount = max_t(int, 0, first_packet_length(sk));
|
||||
|
||||
return put_user(amount, (int __user *)arg);
|
||||
}
|
||||
|
|
@ -2185,7 +2185,7 @@ unsigned int udp_poll(struct file *file, struct socket *sock, poll_table *wait)
|
|||
|
||||
/* Check for false positives due to checksum errors */
|
||||
if ((mask & POLLRDNORM) && !(file->f_flags & O_NONBLOCK) &&
|
||||
!(sk->sk_shutdown & RCV_SHUTDOWN) && !first_packet_length(sk))
|
||||
!(sk->sk_shutdown & RCV_SHUTDOWN) && first_packet_length(sk) == -1)
|
||||
mask &= ~(POLLIN | POLLRDNORM);
|
||||
|
||||
return mask;
|
||||
|
|
@ -2231,7 +2231,6 @@ struct proto udp_prot = {
|
|||
.sysctl_wmem = &sysctl_udp_wmem_min,
|
||||
.sysctl_rmem = &sysctl_udp_rmem_min,
|
||||
.obj_size = sizeof(struct udp_sock),
|
||||
.slab_flags = SLAB_DESTROY_BY_RCU,
|
||||
.h.udp_table = &udp_table,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_setsockopt = compat_udp_setsockopt,
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@ struct proto udplite_prot = {
|
|||
.unhash = udp_lib_unhash,
|
||||
.get_port = udp_v4_get_port,
|
||||
.obj_size = sizeof(struct udp_sock),
|
||||
.slab_flags = SLAB_DESTROY_BY_RCU,
|
||||
.h.udp_table = &udplite_table,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_setsockopt = compat_udp_setsockopt,
|
||||
|
|
|
|||
Loading…
Reference in a new issue