--- zzzz-none-000/linux-4.4.60/net/l2tp/l2tp_ip.c 2017-04-08 07:53:53.000000000 +0000 +++ honeybee-1240e-714/linux-4.4.60/net/l2tp/l2tp_ip.c 2019-07-03 09:21:34.000000000 +0000 @@ -187,7 +187,7 @@ read_unlock_bh(&l2tp_ip_lock); } - if (sk == NULL) + if (sk == NULL || sock_flag(sk, SOCK_DEAD)) goto discard; sock_hold(sk); @@ -378,7 +378,7 @@ if (rc < 0) goto drop; - return 0; + return NET_RX_SUCCESS; drop: IP_INC_STATS(sock_net(sk), IPSTATS_MIB_INDISCARDS); @@ -428,15 +428,20 @@ connected = 1; } + + /* s/2 + NET_SKB_PAD/NET_SKB_PAD/" in call to sock_wmalloc and skb_reserve + * to get the right alignment. + * 2014-07-10 c.paeth@avm.de + */ /* Allocate a socket buffer */ rc = -ENOMEM; - skb = sock_wmalloc(sk, 2 + NET_SKB_PAD + sizeof(struct iphdr) + + skb = sock_wmalloc(sk, NET_SKB_PAD + sizeof(struct iphdr) + 4 + len, 0, GFP_KERNEL); if (!skb) goto error; /* Reserve space for headers, putting IP header on 4-byte boundary. */ - skb_reserve(skb, 2 + NET_SKB_PAD); + skb_reserve(skb, NET_SKB_PAD); skb_reset_network_header(skb); skb_reserve(skb, sizeof(struct iphdr)); skb_reset_transport_header(skb);