kernel: fix an af_packet regression that was breaking PPPoE on 4.1+ (#20707)
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 11 Nov 2015 14:12:51 +0000 (14:12 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 11 Nov 2015 14:12:51 +0000 (14:12 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@47459 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/generic/patches-4.1/103-packet_allow_empty_payload.patch [new file with mode: 0644]
target/linux/generic/patches-4.3/103-packet_allow_empty_payload.patch [new file with mode: 0644]

diff --git a/target/linux/generic/patches-4.1/103-packet_allow_empty_payload.patch b/target/linux/generic/patches-4.1/103-packet_allow_empty_payload.patch
new file mode 100644 (file)
index 0000000..052f457
--- /dev/null
@@ -0,0 +1,17 @@
+Fix a regression in the af_packet code that was breaking PPPoE
+
+pppd sends packets with only a header and no payload.
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+
+--- a/net/packet/af_packet.c
++++ b/net/packet/af_packet.c
+@@ -2106,7 +2106,7 @@ static void tpacket_destruct_skb(struct
+ static bool ll_header_truncated(const struct net_device *dev, int len)
+ {
+       /* net device doesn't like empty head */
+-      if (unlikely(len <= dev->hard_header_len)) {
++      if (unlikely(len < dev->hard_header_len)) {
+               net_warn_ratelimited("%s: packet size is too short (%d <= %d)\n",
+                                    current->comm, len, dev->hard_header_len);
+               return true;
diff --git a/target/linux/generic/patches-4.3/103-packet_allow_empty_payload.patch b/target/linux/generic/patches-4.3/103-packet_allow_empty_payload.patch
new file mode 100644 (file)
index 0000000..3e38bdf
--- /dev/null
@@ -0,0 +1,17 @@
+Fix a regression in the af_packet code that was breaking PPPoE
+
+pppd sends packets with only a header and no payload.
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+
+--- a/net/packet/af_packet.c
++++ b/net/packet/af_packet.c
+@@ -2323,7 +2323,7 @@ static void tpacket_destruct_skb(struct
+ static bool ll_header_truncated(const struct net_device *dev, int len)
+ {
+       /* net device doesn't like empty head */
+-      if (unlikely(len <= dev->hard_header_len)) {
++      if (unlikely(len < dev->hard_header_len)) {
+               net_warn_ratelimited("%s: packet size is too short (%d <= %d)\n",
+                                    current->comm, len, dev->hard_header_len);
+               return true;