Author: nbd Date: 2015-09-22 13:28:28 +0200 (Tue, 22 Sep 2015) New Revision: 47026
Added: trunk/target/linux/generic/patches-3.18/101-pppoe-fix-disconnect-crash.patch trunk/target/linux/generic/patches-4.1/101-pppoe-fix-disconnect-crash.patch Modified: trunk/target/linux/generic/patches-3.18/650-pppoe_header_pad.patch trunk/target/linux/generic/patches-4.1/650-pppoe_header_pad.patch Log: kernel: add a patch to fix crashes on pppoe disconnect/reconnect Signed-off-by: Felix Fietkau <[email protected]> Added: trunk/target/linux/generic/patches-3.18/101-pppoe-fix-disconnect-crash.patch =================================================================== --- trunk/target/linux/generic/patches-3.18/101-pppoe-fix-disconnect-crash.patch (rev 0) +++ trunk/target/linux/generic/patches-3.18/101-pppoe-fix-disconnect-crash.patch 2015-09-22 11:28:28 UTC (rev 47026) @@ -0,0 +1,16 @@ +Fix crash with actions performed on the underlying interface (MAC address, +MTU or link state update). This triggers pppoe_flush_dev(), which cleans up +the device without announcing it in sk->sk_state. + +Patch by Guillaume Nault (pulled from netdev@vger) + +--- a/drivers/net/ppp/pppoe.c ++++ b/drivers/net/ppp/pppoe.c +@@ -313,7 +313,6 @@ static void pppoe_flush_dev(struct net_d + if (po->pppoe_dev == dev && + sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND | PPPOX_ZOMBIE)) { + pppox_unbind_sock(sk); +- sk->sk_state = PPPOX_ZOMBIE; + sk->sk_state_change(sk); + po->pppoe_dev = NULL; + dev_put(dev); Modified: trunk/target/linux/generic/patches-3.18/650-pppoe_header_pad.patch =================================================================== --- trunk/target/linux/generic/patches-3.18/650-pppoe_header_pad.patch 2015-09-22 09:06:00 UTC (rev 47025) +++ trunk/target/linux/generic/patches-3.18/650-pppoe_header_pad.patch 2015-09-22 11:28:28 UTC (rev 47026) @@ -1,6 +1,6 @@ --- a/drivers/net/ppp/pppoe.c +++ b/drivers/net/ppp/pppoe.c -@@ -869,7 +869,7 @@ static int pppoe_sendmsg(struct kiocb *i +@@ -868,7 +868,7 @@ static int pppoe_sendmsg(struct kiocb *i goto end; @@ -9,7 +9,7 @@ 0, GFP_KERNEL); if (!skb) { error = -ENOMEM; -@@ -877,7 +877,7 @@ static int pppoe_sendmsg(struct kiocb *i +@@ -876,7 +876,7 @@ static int pppoe_sendmsg(struct kiocb *i } /* Reserve space for headers. */ Added: trunk/target/linux/generic/patches-4.1/101-pppoe-fix-disconnect-crash.patch =================================================================== --- trunk/target/linux/generic/patches-4.1/101-pppoe-fix-disconnect-crash.patch (rev 0) +++ trunk/target/linux/generic/patches-4.1/101-pppoe-fix-disconnect-crash.patch 2015-09-22 11:28:28 UTC (rev 47026) @@ -0,0 +1,16 @@ +Fix crash with actions performed on the underlying interface (MAC address, +MTU or link state update). This triggers pppoe_flush_dev(), which cleans up +the device without announcing it in sk->sk_state. + +Patch by Guillaume Nault (pulled from netdev@vger) + +--- a/drivers/net/ppp/pppoe.c ++++ b/drivers/net/ppp/pppoe.c +@@ -313,7 +313,6 @@ static void pppoe_flush_dev(struct net_d + if (po->pppoe_dev == dev && + sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND | PPPOX_ZOMBIE)) { + pppox_unbind_sock(sk); +- sk->sk_state = PPPOX_ZOMBIE; + sk->sk_state_change(sk); + po->pppoe_dev = NULL; + dev_put(dev); Modified: trunk/target/linux/generic/patches-4.1/650-pppoe_header_pad.patch =================================================================== --- trunk/target/linux/generic/patches-4.1/650-pppoe_header_pad.patch 2015-09-22 09:06:00 UTC (rev 47025) +++ trunk/target/linux/generic/patches-4.1/650-pppoe_header_pad.patch 2015-09-22 11:28:28 UTC (rev 47026) @@ -1,6 +1,6 @@ --- a/drivers/net/ppp/pppoe.c +++ b/drivers/net/ppp/pppoe.c -@@ -872,7 +872,7 @@ static int pppoe_sendmsg(struct socket * +@@ -871,7 +871,7 @@ static int pppoe_sendmsg(struct socket * goto end; @@ -9,7 +9,7 @@ 0, GFP_KERNEL); if (!skb) { error = -ENOMEM; -@@ -880,7 +880,7 @@ static int pppoe_sendmsg(struct socket * +@@ -879,7 +879,7 @@ static int pppoe_sendmsg(struct socket * } /* Reserve space for headers. */ _______________________________________________ openwrt-commits mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits
