kernel: update 4.1 to 4.1.10
Fixes a regression on spi flash devices (upstream commit 1583eaece6fa). Changelogs: * https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.7 * https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.8 * https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.9 * https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.1.10 096-ipv4-off-by-one-in-continuation-handling-in-proc-net.patch was applied upstream and dropped. Signed-off-by: Mathias Kresin <openwrt@kresin.me> [update from 4.1.9 to 4.1.10] Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> SVN-Revision: 47104
This commit is contained in:
		@@ -4,11 +4,11 @@ LINUX_RELEASE?=1
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LINUX_VERSION-3.18 = .21
 | 
					LINUX_VERSION-3.18 = .21
 | 
				
			||||||
LINUX_VERSION-4.0 = .9
 | 
					LINUX_VERSION-4.0 = .9
 | 
				
			||||||
LINUX_VERSION-4.1 = .6
 | 
					LINUX_VERSION-4.1 = .10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LINUX_KERNEL_MD5SUM-3.18.21 = e4248caaa4cef318c04657e971b37298
 | 
					LINUX_KERNEL_MD5SUM-3.18.21 = e4248caaa4cef318c04657e971b37298
 | 
				
			||||||
LINUX_KERNEL_MD5SUM-4.0.9 = 40fc5f6e2d718e539b45e6601c71985b
 | 
					LINUX_KERNEL_MD5SUM-4.0.9 = 40fc5f6e2d718e539b45e6601c71985b
 | 
				
			||||||
LINUX_KERNEL_MD5SUM-4.1.6 = 1dae0c808e34164cab3dfd57be88bd53
 | 
					LINUX_KERNEL_MD5SUM-4.1.10 = 16953359a8c245d478294af65fd756a8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ifdef KERNEL_PATCHVER
 | 
					ifdef KERNEL_PATCHVER
 | 
				
			||||||
  LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
 | 
					  LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/drivers/mtd/Kconfig
 | 
					--- a/drivers/mtd/Kconfig
 | 
				
			||||||
+++ b/drivers/mtd/Kconfig
 | 
					+++ b/drivers/mtd/Kconfig
 | 
				
			||||||
@@ -164,6 +164,11 @@ config MTD_OF_PARTS
 | 
					@@ -159,6 +159,11 @@ config MTD_OF_PARTS
 | 
				
			||||||
 	  the partition map from the children of the flash node,
 | 
					 	  the partition map from the children of the flash node,
 | 
				
			||||||
 	  as described in Documentation/devicetree/bindings/mtd/partition.txt.
 | 
					 	  as described in Documentation/devicetree/bindings/mtd/partition.txt.
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/drivers/mtd/Kconfig
 | 
					--- a/drivers/mtd/Kconfig
 | 
				
			||||||
+++ b/drivers/mtd/Kconfig
 | 
					+++ b/drivers/mtd/Kconfig
 | 
				
			||||||
@@ -184,6 +184,12 @@ config MTD_BCM47XX_PARTS
 | 
					@@ -179,6 +179,12 @@ config MTD_BCM47XX_PARTS
 | 
				
			||||||
 	  This provides partitions parser for devices based on BCM47xx
 | 
					 	  This provides partitions parser for devices based on BCM47xx
 | 
				
			||||||
 	  boards.
 | 
					 	  boards.
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/drivers/mtd/Kconfig
 | 
					--- a/drivers/mtd/Kconfig
 | 
				
			||||||
+++ b/drivers/mtd/Kconfig
 | 
					+++ b/drivers/mtd/Kconfig
 | 
				
			||||||
@@ -206,6 +206,12 @@ config MTD_MYLOADER_PARTS
 | 
					@@ -201,6 +201,12 @@ config MTD_MYLOADER_PARTS
 | 
				
			||||||
 	  You will still need the parsing functions to be called by the driver
 | 
					 	  You will still need the parsing functions to be called by the driver
 | 
				
			||||||
 	  for your particular device. It won't happen automatically.
 | 
					 	  for your particular device. It won't happen automatically.
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
--- a/arch/mips/ath79/mach-ubnt-xm.c	2015-08-19 21:26:47.694157530 -0600
 | 
					--- a/arch/mips/ath79/mach-ubnt-xm.c
 | 
				
			||||||
+++ b/arch/mips/ath79/mach-ubnt-xm.c	2015-08-20 16:24:06.908537535 -0600
 | 
					+++ b/arch/mips/ath79/mach-ubnt-xm.c
 | 
				
			||||||
@@ -642,3 +642,59 @@ static void __init ubnt_airgateway_setup
 | 
					@@ -642,3 +642,59 @@ static void __init ubnt_airgateway_setup
 | 
				
			||||||
 MIPS_MACHINE(ATH79_MACH_UBNT_AIRGW, "UBNT-AGW", "Ubiquiti AirGateway",
 | 
					 MIPS_MACHINE(ATH79_MACH_UBNT_AIRGW, "UBNT-AGW", "Ubiquiti AirGateway",
 | 
				
			||||||
 	     ubnt_airgateway_setup);
 | 
					 	     ubnt_airgateway_setup);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@
 | 
				
			|||||||
 #define AR913X_BASE_FREQ	5000000
 | 
					 #define AR913X_BASE_FREQ	5000000
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 struct clk {
 | 
					 struct clk {
 | 
				
			||||||
@@ -99,8 +99,8 @@
 | 
					@@ -99,8 +99,8 @@ static void __init ar724x_clocks_init(vo
 | 
				
			||||||
 	div = ((pll >> AR724X_PLL_DIV_SHIFT) & AR724X_PLL_DIV_MASK);
 | 
					 	div = ((pll >> AR724X_PLL_DIV_SHIFT) & AR724X_PLL_DIV_MASK);
 | 
				
			||||||
 	freq = div * ref_rate;
 | 
					 	freq = div * ref_rate;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@
 | 
				
			|||||||
 	select SOC_AR913X
 | 
					 	select SOC_AR913X
 | 
				
			||||||
--- a/arch/mips/ath79/Makefile
 | 
					--- a/arch/mips/ath79/Makefile
 | 
				
			||||||
+++ b/arch/mips/ath79/Makefile
 | 
					+++ b/arch/mips/ath79/Makefile
 | 
				
			||||||
@@ -50,6 +50,7 @@ obj-$(CONFIG_ATH79_MACH_AP132)		+= mach-ap132.o
 | 
					@@ -50,6 +50,7 @@ obj-$(CONFIG_ATH79_MACH_AP132)		+= mach-
 | 
				
			||||||
 obj-$(CONFIG_ATH79_MACH_AP136)		+= mach-ap136.o
 | 
					 obj-$(CONFIG_ATH79_MACH_AP136)		+= mach-ap136.o
 | 
				
			||||||
 obj-$(CONFIG_ATH79_MACH_AP143)		+= mach-ap143.o
 | 
					 obj-$(CONFIG_ATH79_MACH_AP143)		+= mach-ap143.o
 | 
				
			||||||
 obj-$(CONFIG_ATH79_MACH_AP147)		+= mach-ap147.o
 | 
					 obj-$(CONFIG_ATH79_MACH_AP147)		+= mach-ap147.o
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/arch/mips/ath79/Kconfig
 | 
					--- a/arch/mips/ath79/Kconfig
 | 
				
			||||||
+++ b/arch/mips/ath79/Kconfig
 | 
					+++ b/arch/mips/ath79/Kconfig
 | 
				
			||||||
@@ -763,6 +763,16 @@ config ATH79_MACH_CAP4200AG
 | 
					@@ -900,6 +900,16 @@ config ATH79_MACH_CAP4200AG
 | 
				
			||||||
 	select ATH79_DEV_M25P80
 | 
					 	select ATH79_DEV_M25P80
 | 
				
			||||||
 	select ATH79_DEV_WMAC
 | 
					 	select ATH79_DEV_WMAC
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -19,7 +19,7 @@
 | 
				
			|||||||
 	select SOC_QCA955X
 | 
					 	select SOC_QCA955X
 | 
				
			||||||
--- a/arch/mips/ath79/Makefile
 | 
					--- a/arch/mips/ath79/Makefile
 | 
				
			||||||
+++ b/arch/mips/ath79/Makefile
 | 
					+++ b/arch/mips/ath79/Makefile
 | 
				
			||||||
@@ -80,6 +80,7 @@ obj-$(CONFIG_ATH79_MACH_HORNET_UB)	+= ma
 | 
					@@ -91,6 +91,7 @@ obj-$(CONFIG_ATH79_MACH_HORNET_UB)	+= ma
 | 
				
			||||||
 obj-$(CONFIG_ATH79_MACH_MC_MAC1200R)     += mach-mc-mac1200r.o
 | 
					 obj-$(CONFIG_ATH79_MACH_MC_MAC1200R)     += mach-mc-mac1200r.o
 | 
				
			||||||
 obj-$(CONFIG_ATH79_MACH_MR12)		+= mach-mr12.o
 | 
					 obj-$(CONFIG_ATH79_MACH_MR12)		+= mach-mr12.o
 | 
				
			||||||
 obj-$(CONFIG_ATH79_MACH_MR16)		+= mach-mr16.o
 | 
					 obj-$(CONFIG_ATH79_MACH_MR16)		+= mach-mr16.o
 | 
				
			||||||
@@ -29,7 +29,7 @@
 | 
				
			|||||||
 obj-$(CONFIG_ATH79_MACH_MYNET_N600)	+= mach-mynet-n600.o
 | 
					 obj-$(CONFIG_ATH79_MACH_MYNET_N600)	+= mach-mynet-n600.o
 | 
				
			||||||
--- a/arch/mips/ath79/machtypes.h
 | 
					--- a/arch/mips/ath79/machtypes.h
 | 
				
			||||||
+++ b/arch/mips/ath79/machtypes.h
 | 
					+++ b/arch/mips/ath79/machtypes.h
 | 
				
			||||||
@@ -69,6 +69,7 @@ enum ath79_mach_type {
 | 
					@@ -80,6 +80,7 @@ enum ath79_mach_type {
 | 
				
			||||||
 	ATH79_MACH_HORNET_UB,		/* ALFA Networks Hornet-UB */
 | 
					 	ATH79_MACH_HORNET_UB,		/* ALFA Networks Hornet-UB */
 | 
				
			||||||
 	ATH79_MACH_MR12,		/* Cisco Meraki MR12 */
 | 
					 	ATH79_MACH_MR12,		/* Cisco Meraki MR12 */
 | 
				
			||||||
 	ATH79_MACH_MR16,		/* Cisco Meraki MR16 */
 | 
					 	ATH79_MACH_MR16,		/* Cisco Meraki MR16 */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/arch/mips/ath79/Kconfig
 | 
					--- a/arch/mips/ath79/Kconfig
 | 
				
			||||||
+++ b/arch/mips/ath79/Kconfig
 | 
					+++ b/arch/mips/ath79/Kconfig
 | 
				
			||||||
@@ -1031,6 +1031,17 @@
 | 
					@@ -1055,6 +1055,17 @@ config ATH79_MACH_TL_WA901ND_V2
 | 
				
			||||||
 	select ATH79_DEV_M25P80
 | 
					 	select ATH79_DEV_M25P80
 | 
				
			||||||
 	select ATH79_DEV_WMAC
 | 
					 	select ATH79_DEV_WMAC
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -20,7 +20,7 @@
 | 
				
			|||||||
 	select SOC_AR934X
 | 
					 	select SOC_AR934X
 | 
				
			||||||
--- a/arch/mips/ath79/machtypes.h
 | 
					--- a/arch/mips/ath79/machtypes.h
 | 
				
			||||||
+++ b/arch/mips/ath79/machtypes.h
 | 
					+++ b/arch/mips/ath79/machtypes.h
 | 
				
			||||||
@@ -152,6 +152,7 @@
 | 
					@@ -155,6 +155,7 @@ enum ath79_mach_type {
 | 
				
			||||||
 	ATH79_MACH_TL_WA901ND,		/* TP-LINK TL-WA901ND */
 | 
					 	ATH79_MACH_TL_WA901ND,		/* TP-LINK TL-WA901ND */
 | 
				
			||||||
 	ATH79_MACH_TL_WA901ND_V2,	/* TP-LINK TL-WA901ND v2 */
 | 
					 	ATH79_MACH_TL_WA901ND_V2,	/* TP-LINK TL-WA901ND v2 */
 | 
				
			||||||
 	ATH79_MACH_TL_WA901ND_V3,	/* TP-LINK TL-WA901ND v3 */
 | 
					 	ATH79_MACH_TL_WA901ND_V3,	/* TP-LINK TL-WA901ND v3 */
 | 
				
			||||||
@@ -30,7 +30,7 @@
 | 
				
			|||||||
 	ATH79_MACH_TL_WDR6500_V2,	/* TP-LINK TL-WDR6500 v2 */
 | 
					 	ATH79_MACH_TL_WDR6500_V2,	/* TP-LINK TL-WDR6500 v2 */
 | 
				
			||||||
--- a/arch/mips/ath79/Makefile
 | 
					--- a/arch/mips/ath79/Makefile
 | 
				
			||||||
+++ b/arch/mips/ath79/Makefile
 | 
					+++ b/arch/mips/ath79/Makefile
 | 
				
			||||||
@@ -128,6 +128,7 @@
 | 
					@@ -131,6 +131,7 @@ obj-$(CONFIG_ATH79_MACH_TL_WA7210N_V2)	+
 | 
				
			||||||
 obj-$(CONFIG_ATH79_MACH_TL_WA830RE_V2)	+= mach-tl-wa830re-v2.o
 | 
					 obj-$(CONFIG_ATH79_MACH_TL_WA830RE_V2)	+= mach-tl-wa830re-v2.o
 | 
				
			||||||
 obj-$(CONFIG_ATH79_MACH_TL_WA901ND)	+= mach-tl-wa901nd.o
 | 
					 obj-$(CONFIG_ATH79_MACH_TL_WA901ND)	+= mach-tl-wa901nd.o
 | 
				
			||||||
 obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V2)	+= mach-tl-wa901nd-v2.o
 | 
					 obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V2)	+= mach-tl-wa901nd-v2.o
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -241,7 +241,7 @@
 | 
				
			|||||||
  */
 | 
					  */
 | 
				
			||||||
--- a/net/ipv6/datagram.c
 | 
					--- a/net/ipv6/datagram.c
 | 
				
			||||||
+++ b/net/ipv6/datagram.c
 | 
					+++ b/net/ipv6/datagram.c
 | 
				
			||||||
@@ -414,7 +414,7 @@ int ipv6_recv_error(struct sock *sk, str
 | 
					@@ -424,7 +424,7 @@ int ipv6_recv_error(struct sock *sk, str
 | 
				
			||||||
 				ipv6_iface_scope_id(&sin->sin6_addr,
 | 
					 				ipv6_iface_scope_id(&sin->sin6_addr,
 | 
				
			||||||
 						    IP6CB(skb)->iif);
 | 
					 						    IP6CB(skb)->iif);
 | 
				
			||||||
 		} else {
 | 
					 		} else {
 | 
				
			||||||
@@ -250,7 +250,7 @@
 | 
				
			|||||||
 					       &sin->sin6_addr);
 | 
					 					       &sin->sin6_addr);
 | 
				
			||||||
 			sin->sin6_scope_id = 0;
 | 
					 			sin->sin6_scope_id = 0;
 | 
				
			||||||
 		}
 | 
					 		}
 | 
				
			||||||
@@ -751,12 +751,12 @@ int ip6_datagram_send_ctl(struct net *ne
 | 
					@@ -761,12 +761,12 @@ int ip6_datagram_send_ctl(struct net *ne
 | 
				
			||||||
 			}
 | 
					 			}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 			if (fl6->flowlabel&IPV6_FLOWINFO_MASK) {
 | 
					 			if (fl6->flowlabel&IPV6_FLOWINFO_MASK) {
 | 
				
			||||||
@@ -267,7 +267,7 @@
 | 
				
			|||||||
 		case IPV6_2292HOPOPTS:
 | 
					 		case IPV6_2292HOPOPTS:
 | 
				
			||||||
--- a/net/ipv6/ip6_gre.c
 | 
					--- a/net/ipv6/ip6_gre.c
 | 
				
			||||||
+++ b/net/ipv6/ip6_gre.c
 | 
					+++ b/net/ipv6/ip6_gre.c
 | 
				
			||||||
@@ -393,7 +393,7 @@ static void ip6gre_err(struct sk_buff *s
 | 
					@@ -394,7 +394,7 @@ static void ip6gre_err(struct sk_buff *s
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	t = ip6gre_tunnel_lookup(skb->dev, &ipv6h->daddr, &ipv6h->saddr,
 | 
					 	t = ip6gre_tunnel_lookup(skb->dev, &ipv6h->daddr, &ipv6h->saddr,
 | 
				
			||||||
 				flags & GRE_KEY ?
 | 
					 				flags & GRE_KEY ?
 | 
				
			||||||
@@ -276,7 +276,7 @@
 | 
				
			|||||||
 				p[1]);
 | 
					 				p[1]);
 | 
				
			||||||
 	if (!t)
 | 
					 	if (!t)
 | 
				
			||||||
 		return;
 | 
					 		return;
 | 
				
			||||||
@@ -475,11 +475,11 @@ static int ip6gre_rcv(struct sk_buff *sk
 | 
					@@ -476,11 +476,11 @@ static int ip6gre_rcv(struct sk_buff *sk
 | 
				
			||||||
 			offset += 4;
 | 
					 			offset += 4;
 | 
				
			||||||
 		}
 | 
					 		}
 | 
				
			||||||
 		if (flags&GRE_KEY) {
 | 
					 		if (flags&GRE_KEY) {
 | 
				
			||||||
@@ -290,7 +290,7 @@
 | 
				
			|||||||
 			offset += 4;
 | 
					 			offset += 4;
 | 
				
			||||||
 		}
 | 
					 		}
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -744,7 +744,7 @@ static netdev_tx_t ip6gre_xmit2(struct s
 | 
					@@ -745,7 +745,7 @@ static netdev_tx_t ip6gre_xmit2(struct s
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 		if (tunnel->parms.o_flags&GRE_SEQ) {
 | 
					 		if (tunnel->parms.o_flags&GRE_SEQ) {
 | 
				
			||||||
 			++tunnel->o_seqno;
 | 
					 			++tunnel->o_seqno;
 | 
				
			||||||
@@ -299,7 +299,7 @@
 | 
				
			|||||||
 			ptr--;
 | 
					 			ptr--;
 | 
				
			||||||
 		}
 | 
					 		}
 | 
				
			||||||
 		if (tunnel->parms.o_flags&GRE_KEY) {
 | 
					 		if (tunnel->parms.o_flags&GRE_KEY) {
 | 
				
			||||||
@@ -840,7 +840,7 @@ static inline int ip6gre_xmit_ipv6(struc
 | 
					@@ -841,7 +841,7 @@ static inline int ip6gre_xmit_ipv6(struc
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	dsfield = ipv6_get_dsfield(ipv6h);
 | 
					 	dsfield = ipv6_get_dsfield(ipv6h);
 | 
				
			||||||
 	if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
 | 
					 	if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,6 +47,7 @@ CONFIG_ARM64_ERRATUM_824069=y
 | 
				
			|||||||
CONFIG_ARM64_ERRATUM_826319=y
 | 
					CONFIG_ARM64_ERRATUM_826319=y
 | 
				
			||||||
CONFIG_ARM64_ERRATUM_827319=y
 | 
					CONFIG_ARM64_ERRATUM_827319=y
 | 
				
			||||||
CONFIG_ARM64_ERRATUM_832075=y
 | 
					CONFIG_ARM64_ERRATUM_832075=y
 | 
				
			||||||
 | 
					CONFIG_ARM64_ERRATUM_843419=y
 | 
				
			||||||
CONFIG_ARM64_ERRATUM_845719=y
 | 
					CONFIG_ARM64_ERRATUM_845719=y
 | 
				
			||||||
# CONFIG_ARM64_PTDUMP is not set
 | 
					# CONFIG_ARM64_PTDUMP is not set
 | 
				
			||||||
# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set
 | 
					# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/arch/arm/Kconfig
 | 
					--- a/arch/arm/Kconfig
 | 
				
			||||||
+++ b/arch/arm/Kconfig
 | 
					+++ b/arch/arm/Kconfig
 | 
				
			||||||
@@ -2105,6 +2105,8 @@ source "drivers/Kconfig"
 | 
					@@ -2106,6 +2106,8 @@ source "drivers/Kconfig"
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 source "drivers/firmware/Kconfig"
 | 
					 source "drivers/firmware/Kconfig"
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,9 +16,6 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 | 
				
			|||||||
 	bcm4708-luxul-xwc-1000.dtb \
 | 
					 	bcm4708-luxul-xwc-1000.dtb \
 | 
				
			||||||
 	bcm4708-netgear-r6250.dtb \
 | 
					 	bcm4708-netgear-r6250.dtb \
 | 
				
			||||||
 	bcm4708-netgear-r6300-v2.dtb \
 | 
					 	bcm4708-netgear-r6300-v2.dtb \
 | 
				
			||||||
diff --git a/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts b/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts
 | 
					 | 
				
			||||||
new file mode 100644
 | 
					 | 
				
			||||||
index 0000000..705d0c2
 | 
					 | 
				
			||||||
--- /dev/null
 | 
					--- /dev/null
 | 
				
			||||||
+++ b/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts
 | 
					+++ b/arch/arm/boot/dts/bcm4708-linksys-ea6300-v1.dts
 | 
				
			||||||
@@ -0,0 +1,48 @@
 | 
					@@ -0,0 +1,48 @@
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -168,7 +168,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
 | 
				
			|||||||
 config ARCH_MULTIPLATFORM
 | 
					 config ARCH_MULTIPLATFORM
 | 
				
			||||||
 	bool "Allow multiple platforms to be selected"
 | 
					 	bool "Allow multiple platforms to be selected"
 | 
				
			||||||
 	depends on MMU
 | 
					 	depends on MMU
 | 
				
			||||||
@@ -823,6 +859,9 @@ config ARCH_VIRT
 | 
					@@ -824,6 +860,9 @@ config ARCH_VIRT
 | 
				
			||||||
 # Kconfigs may be included either alphabetically (according to the
 | 
					 # Kconfigs may be included either alphabetically (according to the
 | 
				
			||||||
 # plat- suffix) or along side the corresponding mach-* source.
 | 
					 # plat- suffix) or along side the corresponding mach-* source.
 | 
				
			||||||
 #
 | 
					 #
 | 
				
			||||||
@@ -6745,7 +6745,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
 | 
				
			|||||||
 ENTRY(cpu_v6_dcache_clean_area)
 | 
					 ENTRY(cpu_v6_dcache_clean_area)
 | 
				
			||||||
--- a/arch/arm/mm/proc-v7.S
 | 
					--- a/arch/arm/mm/proc-v7.S
 | 
				
			||||||
+++ b/arch/arm/mm/proc-v7.S
 | 
					+++ b/arch/arm/mm/proc-v7.S
 | 
				
			||||||
@@ -456,6 +456,7 @@ __v7_setup:
 | 
					@@ -460,6 +460,7 @@ __v7_setup_cont:
 | 
				
			||||||
 	orr	r0, r0, r6			@ set them
 | 
					 	orr	r0, r0, r6			@ set them
 | 
				
			||||||
  THUMB(	orr	r0, r0, #1 << 30	)	@ Thumb exceptions
 | 
					  THUMB(	orr	r0, r0, #1 << 30	)	@ Thumb exceptions
 | 
				
			||||||
 	ret	lr				@ return to head.S:__ret
 | 
					 	ret	lr				@ return to head.S:__ret
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,7 @@ Subject: [PATCH 033/171] config: Enable CONFIG_MEMCG, but leave it disabled
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/kernel/cgroup.c
 | 
					--- a/kernel/cgroup.c
 | 
				
			||||||
+++ b/kernel/cgroup.c
 | 
					+++ b/kernel/cgroup.c
 | 
				
			||||||
@@ -5393,6 +5393,29 @@ static int __init cgroup_disable(char *s
 | 
					@@ -5394,6 +5394,29 @@ static int __init cgroup_disable(char *s
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 __setup("cgroup_disable=", cgroup_disable);
 | 
					 __setup("cgroup_disable=", cgroup_disable);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/spi/spi-bcm2835.c
 | 
					--- a/drivers/spi/spi-bcm2835.c
 | 
				
			||||||
+++ b/drivers/spi/spi-bcm2835.c
 | 
					+++ b/drivers/spi/spi-bcm2835.c
 | 
				
			||||||
@@ -359,6 +359,8 @@ static int bcm2835_spi_setup(struct spi_
 | 
					@@ -376,6 +376,8 @@ static int bcm2835_spi_setup(struct spi_
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	int err;
 | 
					 	int err;
 | 
				
			||||||
 	struct gpio_chip *chip;
 | 
					 	struct gpio_chip *chip;
 | 
				
			||||||
@@ -28,7 +28,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
 | 
				
			|||||||
 	/*
 | 
					 	/*
 | 
				
			||||||
 	 * sanity checking the native-chipselects
 | 
					 	 * sanity checking the native-chipselects
 | 
				
			||||||
 	 */
 | 
					 	 */
 | 
				
			||||||
@@ -375,15 +377,42 @@ static int bcm2835_spi_setup(struct spi_
 | 
					@@ -392,15 +394,42 @@ static int bcm2835_spi_setup(struct spi_
 | 
				
			||||||
 			"setup: only two native chip-selects are supported\n");
 | 
					 			"setup: only two native chip-selects are supported\n");
 | 
				
			||||||
 		return -EINVAL;
 | 
					 		return -EINVAL;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -375,7 +375,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
 | 
				
			|||||||
 static int bcm2835_spi_transfer_one_poll(struct spi_master *master,
 | 
					 static int bcm2835_spi_transfer_one_poll(struct spi_master *master,
 | 
				
			||||||
 					 struct spi_device *spi,
 | 
					 					 struct spi_device *spi,
 | 
				
			||||||
 					 struct spi_transfer *tfr,
 | 
					 					 struct spi_transfer *tfr,
 | 
				
			||||||
@@ -301,12 +582,26 @@ static int bcm2835_spi_transfer_one(stru
 | 
					@@ -299,6 +580,11 @@ static int bcm2835_spi_transfer_one(stru
 | 
				
			||||||
 		return bcm2835_spi_transfer_one_poll(master, spi, tfr,
 | 
					 		return bcm2835_spi_transfer_one_poll(master, spi, tfr,
 | 
				
			||||||
 						     cs, xfer_time_us);
 | 
					 						     cs, xfer_time_us);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -387,6 +387,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
 | 
				
			|||||||
 	return bcm2835_spi_transfer_one_irq(master, spi, tfr, cs);
 | 
					 	return bcm2835_spi_transfer_one_irq(master, spi, tfr, cs);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 | 
					@@ -324,6 +610,15 @@ static int bcm2835_spi_prepare_message(s
 | 
				
			||||||
 static void bcm2835_spi_handle_err(struct spi_master *master,
 | 
					 static void bcm2835_spi_handle_err(struct spi_master *master,
 | 
				
			||||||
 				   struct spi_message *msg)
 | 
					 				   struct spi_message *msg)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -402,7 +403,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
 | 
				
			|||||||
 	bcm2835_spi_reset_hw(master);
 | 
					 	bcm2835_spi_reset_hw(master);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -505,6 +800,8 @@ static int bcm2835_spi_probe(struct plat
 | 
					@@ -523,6 +818,8 @@ static int bcm2835_spi_probe(struct plat
 | 
				
			||||||
 		goto out_clk_disable;
 | 
					 		goto out_clk_disable;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -411,7 +412,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
 | 
				
			|||||||
 	/* initialise the hardware with the default polarities */
 | 
					 	/* initialise the hardware with the default polarities */
 | 
				
			||||||
 	bcm2835_wr(bs, BCM2835_SPI_CS,
 | 
					 	bcm2835_wr(bs, BCM2835_SPI_CS,
 | 
				
			||||||
 		   BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX);
 | 
					 		   BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX);
 | 
				
			||||||
@@ -535,6 +832,8 @@ static int bcm2835_spi_remove(struct pla
 | 
					@@ -553,6 +850,8 @@ static int bcm2835_spi_remove(struct pla
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	clk_disable_unprepare(bs->clk);
 | 
					 	clk_disable_unprepare(bs->clk);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,15 +11,15 @@ Signed-off-by: Martin Sperl <kernel@martin.sperl.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/spi/spi-bcm2835.c
 | 
					--- a/drivers/spi/spi-bcm2835.c
 | 
				
			||||||
+++ b/drivers/spi/spi-bcm2835.c
 | 
					+++ b/drivers/spi/spi-bcm2835.c
 | 
				
			||||||
@@ -592,6 +592,7 @@ static int bcm2835_spi_transfer_one(stru
 | 
					@@ -609,6 +609,7 @@ static int bcm2835_spi_prepare_message(s
 | 
				
			||||||
 	return bcm2835_spi_transfer_one_irq(master, spi, tfr, cs);
 | 
					 	return 0;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
+#if 0
 | 
					+#if 0
 | 
				
			||||||
 static void bcm2835_spi_handle_err(struct spi_master *master,
 | 
					 static void bcm2835_spi_handle_err(struct spi_master *master,
 | 
				
			||||||
 				   struct spi_message *msg)
 | 
					 				   struct spi_message *msg)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -606,6 +607,7 @@ static void bcm2835_spi_handle_err(struc
 | 
					@@ -623,6 +624,7 @@ static void bcm2835_spi_handle_err(struc
 | 
				
			||||||
 	/* and reset */
 | 
					 	/* and reset */
 | 
				
			||||||
 	bcm2835_spi_reset_hw(master);
 | 
					 	bcm2835_spi_reset_hw(master);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,15 +9,15 @@ Subject: [PATCH 163/171] spi: bcm2835: Fix buld error from previous commit
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/spi/spi-bcm2835.c
 | 
					--- a/drivers/spi/spi-bcm2835.c
 | 
				
			||||||
+++ b/drivers/spi/spi-bcm2835.c
 | 
					+++ b/drivers/spi/spi-bcm2835.c
 | 
				
			||||||
@@ -592,7 +592,6 @@ static int bcm2835_spi_transfer_one(stru
 | 
					@@ -609,7 +609,6 @@ static int bcm2835_spi_prepare_message(s
 | 
				
			||||||
 	return bcm2835_spi_transfer_one_irq(master, spi, tfr, cs);
 | 
					 	return 0;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
-#if 0
 | 
					-#if 0
 | 
				
			||||||
 static void bcm2835_spi_handle_err(struct spi_master *master,
 | 
					 static void bcm2835_spi_handle_err(struct spi_master *master,
 | 
				
			||||||
 				   struct spi_message *msg)
 | 
					 				   struct spi_message *msg)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -607,7 +606,6 @@ static void bcm2835_spi_handle_err(struc
 | 
					@@ -624,7 +623,6 @@ static void bcm2835_spi_handle_err(struc
 | 
				
			||||||
 	/* and reset */
 | 
					 	/* and reset */
 | 
				
			||||||
 	bcm2835_spi_reset_hw(master);
 | 
					 	bcm2835_spi_reset_hw(master);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,46 +0,0 @@
 | 
				
			|||||||
From 25b97c016b26039982daaa2c11d83979f93b71ab Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Andy Whitcroft <apw@canonical.com>
 | 
					 | 
				
			||||||
Date: Thu, 13 Aug 2015 20:49:01 +0100
 | 
					 | 
				
			||||||
Subject: [PATCH] ipv4: off-by-one in continuation handling in /proc/net/route
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
When generating /proc/net/route we emit a header followed by a line for
 | 
					 | 
				
			||||||
each route.  When a short read is performed we will restart this process
 | 
					 | 
				
			||||||
based on the open file descriptor.  When calculating the start point we
 | 
					 | 
				
			||||||
fail to take into account that the 0th entry is the header.  This leads
 | 
					 | 
				
			||||||
us to skip the first entry when doing a continuation read.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This can be easily seen with the comparison below:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  while read l; do echo "$l"; done </proc/net/route >A
 | 
					 | 
				
			||||||
  cat /proc/net/route >B
 | 
					 | 
				
			||||||
  diff -bu A B | grep '^[+-]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
On my example machine I have approximatly 10KB of route output.  There we
 | 
					 | 
				
			||||||
see the very first non-title element is lost in the while read case,
 | 
					 | 
				
			||||||
and an entry around the 8K mark in the cat case:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  +wlan0 00000000 02021EAC 0003 0 0 400 00000000 0 0 0
 | 
					 | 
				
			||||||
  -tun1  00C0AC0A 00000000 0001 0 0 950 00C0FFFF 0 0 0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Fix up the off-by-one when reaquiring position on continuation.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Fixes: 8be33e955cb9 ("fib_trie: Fib walk rcu should take a tnode and key instead of a trie and a leaf")
 | 
					 | 
				
			||||||
BugLink: http://bugs.launchpad.net/bugs/1483440
 | 
					 | 
				
			||||||
Acked-by: Alexander Duyck <alexander.h.duyck@redhat.com>
 | 
					 | 
				
			||||||
Signed-off-by: Andy Whitcroft <apw@canonical.com>
 | 
					 | 
				
			||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 net/ipv4/fib_trie.c | 2 +-
 | 
					 | 
				
			||||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- a/net/ipv4/fib_trie.c
 | 
					 | 
				
			||||||
+++ b/net/ipv4/fib_trie.c
 | 
					 | 
				
			||||||
@@ -2457,7 +2457,7 @@ static struct key_vector *fib_route_get_
 | 
					 | 
				
			||||||
 		key = l->key + 1;
 | 
					 | 
				
			||||||
 		iter->pos++;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-		if (pos-- <= 0)
 | 
					 | 
				
			||||||
+		if (--pos <= 0)
 | 
					 | 
				
			||||||
 			break;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 		l = NULL;
 | 
					 | 
				
			||||||
@@ -15,7 +15,7 @@ they still want to support gcc 3.3 -- well, we don't.
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/arch/powerpc/boot/Makefile
 | 
					--- a/arch/powerpc/boot/Makefile
 | 
				
			||||||
+++ b/arch/powerpc/boot/Makefile
 | 
					+++ b/arch/powerpc/boot/Makefile
 | 
				
			||||||
@@ -45,10 +45,10 @@ BOOTCFLAGS	+= -I$(obj) -I$(srctree)/$(ob
 | 
					@@ -48,10 +48,10 @@ BOOTCFLAGS	+= -I$(obj) -I$(srctree)/$(ob
 | 
				
			||||||
 DTC_FLAGS	?= -p 1024
 | 
					 DTC_FLAGS	?= -p 1024
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 $(obj)/4xx.o: BOOTCFLAGS += -mcpu=405
 | 
					 $(obj)/4xx.o: BOOTCFLAGS += -mcpu=405
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
				
			|||||||
 	if (!net_eq(dev_net(dev), sock_net(sk)))
 | 
					 	if (!net_eq(dev_net(dev), sock_net(sk)))
 | 
				
			||||||
 		goto drop;
 | 
					 		goto drop;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -2852,6 +2854,7 @@ static int packet_create(struct net *net
 | 
					@@ -2851,6 +2853,7 @@ static int packet_create(struct net *net
 | 
				
			||||||
 	spin_lock_init(&po->bind_lock);
 | 
					 	spin_lock_init(&po->bind_lock);
 | 
				
			||||||
 	mutex_init(&po->pg_vec_lock);
 | 
					 	mutex_init(&po->pg_vec_lock);
 | 
				
			||||||
 	po->prot_hook.func = packet_rcv;
 | 
					 	po->prot_hook.func = packet_rcv;
 | 
				
			||||||
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	if (sock->type == SOCK_PACKET)
 | 
					 	if (sock->type == SOCK_PACKET)
 | 
				
			||||||
 		po->prot_hook.func = packet_rcv_spkt;
 | 
					 		po->prot_hook.func = packet_rcv_spkt;
 | 
				
			||||||
@@ -3457,6 +3460,16 @@ packet_setsockopt(struct socket *sock, i
 | 
					@@ -3456,6 +3459,16 @@ packet_setsockopt(struct socket *sock, i
 | 
				
			||||||
 		po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
 | 
					 		po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
 | 
				
			||||||
 		return 0;
 | 
					 		return 0;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
				
			|||||||
 	default:
 | 
					 	default:
 | 
				
			||||||
 		return -ENOPROTOOPT;
 | 
					 		return -ENOPROTOOPT;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -3508,6 +3521,13 @@ static int packet_getsockopt(struct sock
 | 
					@@ -3507,6 +3520,13 @@ static int packet_getsockopt(struct sock
 | 
				
			||||||
 	case PACKET_VNET_HDR:
 | 
					 	case PACKET_VNET_HDR:
 | 
				
			||||||
 		val = po->has_vnet_hdr;
 | 
					 		val = po->has_vnet_hdr;
 | 
				
			||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,7 @@ Isolating individual bridge ports
 | 
				
			|||||||
 		skb = NULL;
 | 
					 		skb = NULL;
 | 
				
			||||||
--- a/net/bridge/br_forward.c
 | 
					--- a/net/bridge/br_forward.c
 | 
				
			||||||
+++ b/net/bridge/br_forward.c
 | 
					+++ b/net/bridge/br_forward.c
 | 
				
			||||||
@@ -118,7 +118,7 @@ EXPORT_SYMBOL_GPL(br_deliver);
 | 
					@@ -119,7 +119,7 @@ EXPORT_SYMBOL_GPL(br_deliver);
 | 
				
			||||||
 /* called with rcu_read_lock */
 | 
					 /* called with rcu_read_lock */
 | 
				
			||||||
 void br_forward(const struct net_bridge_port *to, struct sk_buff *skb, struct sk_buff *skb0)
 | 
					 void br_forward(const struct net_bridge_port *to, struct sk_buff *skb, struct sk_buff *skb0)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -70,7 +70,7 @@ Isolating individual bridge ports
 | 
				
			|||||||
 		if (skb0)
 | 
					 		if (skb0)
 | 
				
			||||||
 			deliver_clone(to, skb, __br_forward);
 | 
					 			deliver_clone(to, skb, __br_forward);
 | 
				
			||||||
 		else
 | 
					 		else
 | 
				
			||||||
@@ -174,7 +174,7 @@ static void br_flood(struct net_bridge *
 | 
					@@ -175,7 +175,7 @@ static void br_flood(struct net_bridge *
 | 
				
			||||||
 		     struct sk_buff *skb0,
 | 
					 		     struct sk_buff *skb0,
 | 
				
			||||||
 		     void (*__packet_hook)(const struct net_bridge_port *p,
 | 
					 		     void (*__packet_hook)(const struct net_bridge_port *p,
 | 
				
			||||||
 					   struct sk_buff *skb),
 | 
					 					   struct sk_buff *skb),
 | 
				
			||||||
@@ -79,7 +79,7 @@ Isolating individual bridge ports
 | 
				
			|||||||
 {
 | 
					 {
 | 
				
			||||||
 	struct net_bridge_port *p;
 | 
					 	struct net_bridge_port *p;
 | 
				
			||||||
 	struct net_bridge_port *prev;
 | 
					 	struct net_bridge_port *prev;
 | 
				
			||||||
@@ -182,6 +182,8 @@ static void br_flood(struct net_bridge *
 | 
					@@ -183,6 +183,8 @@ static void br_flood(struct net_bridge *
 | 
				
			||||||
 	prev = NULL;
 | 
					 	prev = NULL;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	list_for_each_entry_rcu(p, &br->port_list, list) {
 | 
					 	list_for_each_entry_rcu(p, &br->port_list, list) {
 | 
				
			||||||
@@ -88,7 +88,7 @@ Isolating individual bridge ports
 | 
				
			|||||||
 		/* Do not flood unicast traffic to ports that turn it off */
 | 
					 		/* Do not flood unicast traffic to ports that turn it off */
 | 
				
			||||||
 		if (unicast && !(p->flags & BR_FLOOD))
 | 
					 		if (unicast && !(p->flags & BR_FLOOD))
 | 
				
			||||||
 			continue;
 | 
					 			continue;
 | 
				
			||||||
@@ -216,14 +218,14 @@ out:
 | 
					@@ -217,14 +219,14 @@ out:
 | 
				
			||||||
 /* called with rcu_read_lock */
 | 
					 /* called with rcu_read_lock */
 | 
				
			||||||
 void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb, bool unicast)
 | 
					 void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb, bool unicast)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -310,7 +310,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
 | 
				
			|||||||
 	rcu_assign_pointer(*pp, p);
 | 
					 	rcu_assign_pointer(*pp, p);
 | 
				
			||||||
--- a/net/bridge/br_forward.c
 | 
					--- a/net/bridge/br_forward.c
 | 
				
			||||||
+++ b/net/bridge/br_forward.c
 | 
					+++ b/net/bridge/br_forward.c
 | 
				
			||||||
@@ -169,6 +169,34 @@ out:
 | 
					@@ -170,6 +170,34 @@ out:
 | 
				
			||||||
 	return p;
 | 
					 	return p;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -345,7 +345,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
 | 
				
			|||||||
 /* called under bridge lock */
 | 
					 /* called under bridge lock */
 | 
				
			||||||
 static void br_flood(struct net_bridge *br, struct sk_buff *skb,
 | 
					 static void br_flood(struct net_bridge *br, struct sk_buff *skb,
 | 
				
			||||||
 		     struct sk_buff *skb0,
 | 
					 		     struct sk_buff *skb0,
 | 
				
			||||||
@@ -241,6 +269,7 @@ static void br_multicast_flood(struct ne
 | 
					@@ -242,6 +270,7 @@ static void br_multicast_flood(struct ne
 | 
				
			||||||
 	struct net_bridge_port *prev = NULL;
 | 
					 	struct net_bridge_port *prev = NULL;
 | 
				
			||||||
 	struct net_bridge_port_group *p;
 | 
					 	struct net_bridge_port_group *p;
 | 
				
			||||||
 	struct hlist_node *rp;
 | 
					 	struct hlist_node *rp;
 | 
				
			||||||
@@ -353,7 +353,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	rp = rcu_dereference(hlist_first_rcu(&br->router_list));
 | 
					 	rp = rcu_dereference(hlist_first_rcu(&br->router_list));
 | 
				
			||||||
 	p = mdst ? rcu_dereference(mdst->ports) : NULL;
 | 
					 	p = mdst ? rcu_dereference(mdst->ports) : NULL;
 | 
				
			||||||
@@ -251,10 +280,19 @@ static void br_multicast_flood(struct ne
 | 
					@@ -252,10 +281,19 @@ static void br_multicast_flood(struct ne
 | 
				
			||||||
 		rport = rp ? hlist_entry(rp, struct net_bridge_port, rlist) :
 | 
					 		rport = rp ? hlist_entry(rp, struct net_bridge_port, rlist) :
 | 
				
			||||||
 			     NULL;
 | 
					 			     NULL;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/net/netlink/af_netlink.c
 | 
					--- a/net/netlink/af_netlink.c
 | 
				
			||||||
+++ b/net/netlink/af_netlink.c
 | 
					+++ b/net/netlink/af_netlink.c
 | 
				
			||||||
@@ -1724,27 +1724,7 @@ void netlink_detachskb(struct sock *sk,
 | 
					@@ -1775,27 +1775,7 @@ void netlink_detachskb(struct sock *sk,
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
 | 
					 static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/include/linux/skbuff.h
 | 
					--- a/include/linux/skbuff.h
 | 
				
			||||||
+++ b/include/linux/skbuff.h
 | 
					+++ b/include/linux/skbuff.h
 | 
				
			||||||
@@ -2031,7 +2031,7 @@ static inline int pskb_network_may_pull(
 | 
					@@ -2027,7 +2027,7 @@ static inline int pskb_network_may_pull(
 | 
				
			||||||
  * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
 | 
					  * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
 #ifndef NET_SKB_PAD
 | 
					 #ifndef NET_SKB_PAD
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ when needed.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/include/linux/skbuff.h
 | 
					--- a/include/linux/skbuff.h
 | 
				
			||||||
+++ b/include/linux/skbuff.h
 | 
					+++ b/include/linux/skbuff.h
 | 
				
			||||||
@@ -2076,6 +2076,24 @@ static inline void pskb_trim_unique(stru
 | 
					@@ -2072,6 +2072,24 @@ static inline void pskb_trim_unique(stru
 | 
				
			||||||
 	BUG_ON(err);
 | 
					 	BUG_ON(err);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,7 +68,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
				
			|||||||
 static void rt_fibinfo_free(struct rtable __rcu **rtp)
 | 
					 static void rt_fibinfo_free(struct rtable __rcu **rtp)
 | 
				
			||||||
--- a/net/ipv4/fib_trie.c
 | 
					--- a/net/ipv4/fib_trie.c
 | 
				
			||||||
+++ b/net/ipv4/fib_trie.c
 | 
					+++ b/net/ipv4/fib_trie.c
 | 
				
			||||||
@@ -2352,6 +2352,7 @@ static const char *const rtn_type_names[
 | 
					@@ -2348,6 +2348,7 @@ static const char *const rtn_type_names[
 | 
				
			||||||
 	[RTN_THROW] = "THROW",
 | 
					 	[RTN_THROW] = "THROW",
 | 
				
			||||||
 	[RTN_NAT] = "NAT",
 | 
					 	[RTN_NAT] = "NAT",
 | 
				
			||||||
 	[RTN_XRESOLVE] = "XRESOLVE",
 | 
					 	[RTN_XRESOLVE] = "XRESOLVE",
 | 
				
			||||||
@@ -143,7 +143,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
				
			|||||||
 static const struct rt6_info ip6_blk_hole_entry_template = {
 | 
					 static const struct rt6_info ip6_blk_hole_entry_template = {
 | 
				
			||||||
 	.dst = {
 | 
					 	.dst = {
 | 
				
			||||||
 		.__refcnt	= ATOMIC_INIT(1),
 | 
					 		.__refcnt	= ATOMIC_INIT(1),
 | 
				
			||||||
@@ -1635,6 +1652,11 @@ int ip6_route_add(struct fib6_config *cf
 | 
					@@ -1634,6 +1651,11 @@ int ip6_route_info_create(struct fib6_co
 | 
				
			||||||
 			rt->dst.output = ip6_pkt_prohibit_out;
 | 
					 			rt->dst.output = ip6_pkt_prohibit_out;
 | 
				
			||||||
 			rt->dst.input = ip6_pkt_prohibit;
 | 
					 			rt->dst.input = ip6_pkt_prohibit;
 | 
				
			||||||
 			break;
 | 
					 			break;
 | 
				
			||||||
@@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
				
			|||||||
 		case RTN_THROW:
 | 
					 		case RTN_THROW:
 | 
				
			||||||
 		default:
 | 
					 		default:
 | 
				
			||||||
 			rt->dst.error = (cfg->fc_type == RTN_THROW) ? -EAGAIN
 | 
					 			rt->dst.error = (cfg->fc_type == RTN_THROW) ? -EAGAIN
 | 
				
			||||||
@@ -2202,6 +2224,17 @@ static int ip6_pkt_prohibit_out(struct s
 | 
					@@ -2225,6 +2247,17 @@ static int ip6_pkt_prohibit_out(struct s
 | 
				
			||||||
 	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
 | 
					 	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -173,7 +173,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
				
			|||||||
 /*
 | 
					 /*
 | 
				
			||||||
  *	Allocate a dst for local (unicast / anycast) address.
 | 
					  *	Allocate a dst for local (unicast / anycast) address.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
@@ -2428,7 +2461,8 @@ static int rtm_to_fib6_config(struct sk_
 | 
					@@ -2451,7 +2484,8 @@ static int rtm_to_fib6_config(struct sk_
 | 
				
			||||||
 	if (rtm->rtm_type == RTN_UNREACHABLE ||
 | 
					 	if (rtm->rtm_type == RTN_UNREACHABLE ||
 | 
				
			||||||
 	    rtm->rtm_type == RTN_BLACKHOLE ||
 | 
					 	    rtm->rtm_type == RTN_BLACKHOLE ||
 | 
				
			||||||
 	    rtm->rtm_type == RTN_PROHIBIT ||
 | 
					 	    rtm->rtm_type == RTN_PROHIBIT ||
 | 
				
			||||||
@@ -183,7 +183,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
				
			|||||||
 		cfg->fc_flags |= RTF_REJECT;
 | 
					 		cfg->fc_flags |= RTF_REJECT;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	if (rtm->rtm_type == RTN_LOCAL)
 | 
					 	if (rtm->rtm_type == RTN_LOCAL)
 | 
				
			||||||
@@ -2644,6 +2678,9 @@ static int rt6_fill_node(struct net *net
 | 
					@@ -2793,6 +2827,9 @@ static int rt6_fill_node(struct net *net
 | 
				
			||||||
 		case -EACCES:
 | 
					 		case -EACCES:
 | 
				
			||||||
 			rtm->rtm_type = RTN_PROHIBIT;
 | 
					 			rtm->rtm_type = RTN_PROHIBIT;
 | 
				
			||||||
 			break;
 | 
					 			break;
 | 
				
			||||||
@@ -193,7 +193,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
				
			|||||||
 		case -EAGAIN:
 | 
					 		case -EAGAIN:
 | 
				
			||||||
 			rtm->rtm_type = RTN_THROW;
 | 
					 			rtm->rtm_type = RTN_THROW;
 | 
				
			||||||
 			break;
 | 
					 			break;
 | 
				
			||||||
@@ -2901,6 +2938,8 @@ static int ip6_route_dev_notify(struct n
 | 
					@@ -3050,6 +3087,8 @@ static int ip6_route_dev_notify(struct n
 | 
				
			||||||
 #ifdef CONFIG_IPV6_MULTIPLE_TABLES
 | 
					 #ifdef CONFIG_IPV6_MULTIPLE_TABLES
 | 
				
			||||||
 		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
 | 
					 		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
 | 
				
			||||||
 		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
 | 
					 		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
 | 
				
			||||||
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
				
			|||||||
 		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
 | 
					 		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
 | 
				
			||||||
 		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
 | 
					 		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
 | 
				
			||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
@@ -3117,6 +3156,17 @@ static int __net_init ip6_route_net_init
 | 
					@@ -3266,6 +3305,17 @@ static int __net_init ip6_route_net_init
 | 
				
			||||||
 	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
 | 
					 	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
 | 
				
			||||||
 	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
 | 
					 	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
 | 
				
			||||||
 			 ip6_template_metrics, true);
 | 
					 			 ip6_template_metrics, true);
 | 
				
			||||||
@@ -220,7 +220,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
				
			|||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	net->ipv6.sysctl.flush_delay = 0;
 | 
					 	net->ipv6.sysctl.flush_delay = 0;
 | 
				
			||||||
@@ -3135,6 +3185,8 @@ out:
 | 
					@@ -3284,6 +3334,8 @@ out:
 | 
				
			||||||
 	return ret;
 | 
					 	return ret;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 #ifdef CONFIG_IPV6_MULTIPLE_TABLES
 | 
					 #ifdef CONFIG_IPV6_MULTIPLE_TABLES
 | 
				
			||||||
@@ -229,7 +229,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
				
			|||||||
 out_ip6_prohibit_entry:
 | 
					 out_ip6_prohibit_entry:
 | 
				
			||||||
 	kfree(net->ipv6.ip6_prohibit_entry);
 | 
					 	kfree(net->ipv6.ip6_prohibit_entry);
 | 
				
			||||||
 out_ip6_null_entry:
 | 
					 out_ip6_null_entry:
 | 
				
			||||||
@@ -3152,6 +3204,7 @@ static void __net_exit ip6_route_net_exi
 | 
					@@ -3301,6 +3353,7 @@ static void __net_exit ip6_route_net_exi
 | 
				
			||||||
 #ifdef CONFIG_IPV6_MULTIPLE_TABLES
 | 
					 #ifdef CONFIG_IPV6_MULTIPLE_TABLES
 | 
				
			||||||
 	kfree(net->ipv6.ip6_prohibit_entry);
 | 
					 	kfree(net->ipv6.ip6_prohibit_entry);
 | 
				
			||||||
 	kfree(net->ipv6.ip6_blk_hole_entry);
 | 
					 	kfree(net->ipv6.ip6_blk_hole_entry);
 | 
				
			||||||
@@ -237,7 +237,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 | 
				
			|||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
 	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
 | 
					 	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
@@ -3248,6 +3301,9 @@ int __init ip6_route_init(void)
 | 
					@@ -3397,6 +3450,9 @@ int __init ip6_route_init(void)
 | 
				
			||||||
 	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
 | 
					 	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
 | 
				
			||||||
 	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
 | 
					 	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
 | 
				
			||||||
 	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
 | 
					 	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/net/core/dev.c
 | 
					--- a/net/core/dev.c
 | 
				
			||||||
+++ b/net/core/dev.c
 | 
					+++ b/net/core/dev.c
 | 
				
			||||||
@@ -4039,6 +4039,9 @@ static enum gro_result dev_gro_receive(s
 | 
					@@ -4036,6 +4036,9 @@ static enum gro_result dev_gro_receive(s
 | 
				
			||||||
 	enum gro_result ret;
 | 
					 	enum gro_result ret;
 | 
				
			||||||
 	int grow;
 | 
					 	int grow;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
				
			|||||||
 	if (!(skb->dev->features & NETIF_F_GRO))
 | 
					 	if (!(skb->dev->features & NETIF_F_GRO))
 | 
				
			||||||
 		goto normal;
 | 
					 		goto normal;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -5186,6 +5189,48 @@ static void __netdev_adjacent_dev_unlink
 | 
					@@ -5185,6 +5188,48 @@ static void __netdev_adjacent_dev_unlink
 | 
				
			||||||
 					   &upper_dev->adj_list.lower);
 | 
					 					   &upper_dev->adj_list.lower);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
				
			|||||||
 static int __netdev_upper_dev_link(struct net_device *dev,
 | 
					 static int __netdev_upper_dev_link(struct net_device *dev,
 | 
				
			||||||
 				   struct net_device *upper_dev, bool master,
 | 
					 				   struct net_device *upper_dev, bool master,
 | 
				
			||||||
 				   void *private)
 | 
					 				   void *private)
 | 
				
			||||||
@@ -5246,6 +5291,7 @@ static int __netdev_upper_dev_link(struc
 | 
					@@ -5245,6 +5290,7 @@ static int __netdev_upper_dev_link(struc
 | 
				
			||||||
 			goto rollback_lower_mesh;
 | 
					 			goto rollback_lower_mesh;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
				
			|||||||
 	call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
 | 
					 	call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
 | 
				
			||||||
 	return 0;
 | 
					 	return 0;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -5363,6 +5409,7 @@ void netdev_upper_dev_unlink(struct net_
 | 
					@@ -5362,6 +5408,7 @@ void netdev_upper_dev_unlink(struct net_
 | 
				
			||||||
 	list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
 | 
					 	list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
 | 
				
			||||||
 		__netdev_adjacent_dev_unlink(dev, i->dev);
 | 
					 		__netdev_adjacent_dev_unlink(dev, i->dev);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -92,7 +92,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
				
			|||||||
 	call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
 | 
					 	call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 EXPORT_SYMBOL(netdev_upper_dev_unlink);
 | 
					 EXPORT_SYMBOL(netdev_upper_dev_unlink);
 | 
				
			||||||
@@ -5902,6 +5949,7 @@ int dev_set_mac_address(struct net_devic
 | 
					@@ -5901,6 +5948,7 @@ int dev_set_mac_address(struct net_devic
 | 
				
			||||||
 	if (err)
 | 
					 	if (err)
 | 
				
			||||||
 		return err;
 | 
					 		return err;
 | 
				
			||||||
 	dev->addr_assign_type = NET_ADDR_SET;
 | 
					 	dev->addr_assign_type = NET_ADDR_SET;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,7 +41,7 @@
 | 
				
			|||||||
  */
 | 
					  */
 | 
				
			||||||
--- a/include/linux/skbuff.h
 | 
					--- a/include/linux/skbuff.h
 | 
				
			||||||
+++ b/include/linux/skbuff.h
 | 
					+++ b/include/linux/skbuff.h
 | 
				
			||||||
@@ -2062,6 +2062,10 @@ static inline int pskb_trim(struct sk_bu
 | 
					@@ -2058,6 +2058,10 @@ static inline int pskb_trim(struct sk_bu
 | 
				
			||||||
 	return (len < skb->len) ? __pskb_trim(skb, len) : 0;
 | 
					 	return (len < skb->len) ? __pskb_trim(skb, len) : 0;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -52,7 +52,7 @@
 | 
				
			|||||||
 /**
 | 
					 /**
 | 
				
			||||||
  *	pskb_trim_unique - remove end from a paged unique (not cloned) buffer
 | 
					  *	pskb_trim_unique - remove end from a paged unique (not cloned) buffer
 | 
				
			||||||
  *	@skb: buffer to alter
 | 
					  *	@skb: buffer to alter
 | 
				
			||||||
@@ -2188,16 +2192,6 @@ static inline struct sk_buff *dev_alloc_
 | 
					@@ -2184,16 +2188,6 @@ static inline struct sk_buff *dev_alloc_
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -86,7 +86,7 @@
 | 
				
			|||||||
 	help
 | 
					 	help
 | 
				
			||||||
--- a/net/core/dev.c
 | 
					--- a/net/core/dev.c
 | 
				
			||||||
+++ b/net/core/dev.c
 | 
					+++ b/net/core/dev.c
 | 
				
			||||||
@@ -2649,10 +2649,20 @@ static int xmit_one(struct sk_buff *skb,
 | 
					@@ -2645,10 +2645,20 @@ static int xmit_one(struct sk_buff *skb,
 | 
				
			||||||
 	if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all))
 | 
					 	if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all))
 | 
				
			||||||
 		dev_queue_xmit_nit(skb, dev);
 | 
					 		dev_queue_xmit_nit(skb, dev);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@
 | 
				
			|||||||
 /* The Mellanox Tavor device gives false positive parity errors
 | 
					 /* The Mellanox Tavor device gives false positive parity errors
 | 
				
			||||||
  * Mark this device with a broken_parity_status, to allow
 | 
					  * Mark this device with a broken_parity_status, to allow
 | 
				
			||||||
  * PCI scanning code to "skip" this now blacklisted device.
 | 
					  * PCI scanning code to "skip" this now blacklisted device.
 | 
				
			||||||
@@ -2925,6 +2926,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
 | 
					@@ -2949,6 +2950,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
 | 
				
			||||||
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
 | 
					 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
 | 
				
			||||||
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
 | 
					 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -31,7 +31,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 /*
 | 
					 /*
 | 
				
			||||||
  * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.  To
 | 
					  * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.  To
 | 
				
			||||||
@@ -2981,6 +2983,8 @@ static void fixup_debug_report(struct pc
 | 
					@@ -3005,6 +3007,8 @@ static void fixup_debug_report(struct pc
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -40,7 +40,7 @@
 | 
				
			|||||||
 /*
 | 
					 /*
 | 
				
			||||||
  * Some BIOS implementations leave the Intel GPU interrupts enabled,
 | 
					  * Some BIOS implementations leave the Intel GPU interrupts enabled,
 | 
				
			||||||
  * even though no one is handling them (f.e. i915 driver is never loaded).
 | 
					  * even though no one is handling them (f.e. i915 driver is never loaded).
 | 
				
			||||||
@@ -3015,6 +3019,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
 | 
					@@ -3039,6 +3043,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
 | 
				
			||||||
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
 | 
					 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
 | 
				
			||||||
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
 | 
					 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,7 +49,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | 
				
			|||||||
 	depends on ACPI && PCI
 | 
					 	depends on ACPI && PCI
 | 
				
			||||||
--- a/drivers/ata/libata-core.c
 | 
					--- a/drivers/ata/libata-core.c
 | 
				
			||||||
+++ b/drivers/ata/libata-core.c
 | 
					+++ b/drivers/ata/libata-core.c
 | 
				
			||||||
@@ -728,6 +728,19 @@ u64 ata_tf_read_block(const struct ata_t
 | 
					@@ -728,6 +728,19 @@ u64 ata_tf_read_block(struct ata_taskfil
 | 
				
			||||||
 	return block;
 | 
					 	return block;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -69,7 +69,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | 
				
			|||||||
 /**
 | 
					 /**
 | 
				
			||||||
  *	ata_build_rw_tf - Build ATA taskfile for given read/write request
 | 
					  *	ata_build_rw_tf - Build ATA taskfile for given read/write request
 | 
				
			||||||
  *	@tf: Target ATA taskfile
 | 
					  *	@tf: Target ATA taskfile
 | 
				
			||||||
@@ -4789,6 +4802,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
 | 
					@@ -4773,6 +4786,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
 | 
				
			||||||
 		if (tag < 0)
 | 
					 		if (tag < 0)
 | 
				
			||||||
 			return NULL;
 | 
					 			return NULL;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -79,7 +79,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	qc = __ata_qc_from_tag(ap, tag);
 | 
					 	qc = __ata_qc_from_tag(ap, tag);
 | 
				
			||||||
 	qc->tag = tag;
 | 
					 	qc->tag = tag;
 | 
				
			||||||
@@ -5686,6 +5702,9 @@ struct ata_port *ata_port_alloc(struct a
 | 
					@@ -5670,6 +5686,9 @@ struct ata_port *ata_port_alloc(struct a
 | 
				
			||||||
 	ap->stats.unhandled_irq = 1;
 | 
					 	ap->stats.unhandled_irq = 1;
 | 
				
			||||||
 	ap->stats.idle_irq = 1;
 | 
					 	ap->stats.idle_irq = 1;
 | 
				
			||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
@@ -89,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | 
				
			|||||||
 	ata_sff_port_init(ap);
 | 
					 	ata_sff_port_init(ap);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	return ap;
 | 
					 	return ap;
 | 
				
			||||||
@@ -5707,6 +5726,12 @@ static void ata_host_release(struct devi
 | 
					@@ -5691,6 +5710,12 @@ static void ata_host_release(struct devi
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 		kfree(ap->pmp_link);
 | 
					 		kfree(ap->pmp_link);
 | 
				
			||||||
 		kfree(ap->slave_link);
 | 
					 		kfree(ap->slave_link);
 | 
				
			||||||
@@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | 
				
			|||||||
 		kfree(ap);
 | 
					 		kfree(ap);
 | 
				
			||||||
 		host->ports[i] = NULL;
 | 
					 		host->ports[i] = NULL;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -6153,7 +6178,23 @@ int ata_host_register(struct ata_host *h
 | 
					@@ -6137,7 +6162,23 @@ int ata_host_register(struct ata_host *h
 | 
				
			||||||
 		host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
 | 
					 		host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
 | 
				
			||||||
 		host->ports[i]->local_port_no = i + 1;
 | 
					 		host->ports[i]->local_port_no = i + 1;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -184,7 +184,7 @@
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
--- a/net/ipv4/fib_trie.c
 | 
					--- a/net/ipv4/fib_trie.c
 | 
				
			||||||
+++ b/net/ipv4/fib_trie.c
 | 
					+++ b/net/ipv4/fib_trie.c
 | 
				
			||||||
@@ -2630,10 +2630,12 @@ static const struct file_operations fib_
 | 
					@@ -2626,10 +2626,12 @@ static const struct file_operations fib_
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 int __net_init fib_proc_init(struct net *net)
 | 
					 int __net_init fib_proc_init(struct net *net)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -199,7 +199,7 @@
 | 
				
			|||||||
 			 &fib_triestat_fops))
 | 
					 			 &fib_triestat_fops))
 | 
				
			||||||
 		goto out2;
 | 
					 		goto out2;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -2643,17 +2645,21 @@ int __net_init fib_proc_init(struct net
 | 
					@@ -2639,17 +2641,21 @@ int __net_init fib_proc_init(struct net
 | 
				
			||||||
 	return 0;
 | 
					 	return 0;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 out3:
 | 
					 out3:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@
 | 
				
			|||||||
+#endif
 | 
					+#endif
 | 
				
			||||||
--- a/lib/decompress_unlzo.c
 | 
					--- a/lib/decompress_unlzo.c
 | 
				
			||||||
+++ b/lib/decompress_unlzo.c
 | 
					+++ b/lib/decompress_unlzo.c
 | 
				
			||||||
@@ -38,6 +38,7 @@
 | 
					@@ -39,6 +39,7 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 #include <linux/types.h>
 | 
					 #include <linux/types.h>
 | 
				
			||||||
 #include <linux/lzo.h>
 | 
					 #include <linux/lzo.h>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/mtd/Kconfig
 | 
					--- a/drivers/mtd/Kconfig
 | 
				
			||||||
+++ b/drivers/mtd/Kconfig
 | 
					+++ b/drivers/mtd/Kconfig
 | 
				
			||||||
@@ -200,6 +200,13 @@ config MTD_MYLOADER_PARTS
 | 
					@@ -195,6 +195,13 @@ config MTD_MYLOADER_PARTS
 | 
				
			||||||
 	  You will still need the parsing functions to be called by the driver
 | 
					 	  You will still need the parsing functions to be called by the driver
 | 
				
			||||||
 	  for your particular device. It won't happen automatically.
 | 
					 	  for your particular device. It won't happen automatically.
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,7 +63,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
 | 
				
			|||||||
+				     interface);
 | 
					+				     interface);
 | 
				
			||||||
+	}
 | 
					+	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	if (IS_ERR(phydev)) {
 | 
					 	if (IS_ERR_OR_NULL(phydev)) {
 | 
				
			||||||
 		pr_err("%s: Could not attach to PHY\n", dev->name);
 | 
					 		pr_err("%s: Could not attach to PHY\n", dev->name);
 | 
				
			||||||
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
 | 
					--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
 | 
				
			||||||
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
 | 
					+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
 | 
					--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
 | 
				
			||||||
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
 | 
					+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
 | 
				
			||||||
@@ -856,7 +856,7 @@ static int stmmac_init_phy(struct net_de
 | 
					@@ -859,7 +859,7 @@ static int stmmac_init_phy(struct net_de
 | 
				
			||||||
 	 * device as well.
 | 
					 	 * device as well.
 | 
				
			||||||
 	 * Note: phydev->phy_id is the result of reading the UID PHY registers.
 | 
					 	 * Note: phydev->phy_id is the result of reading the UID PHY registers.
 | 
				
			||||||
 	 */
 | 
					 	 */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5514,7 +5514,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
				
			|||||||
 	  (transaction layer end-to-end CRC checking).
 | 
					 	  (transaction layer end-to-end CRC checking).
 | 
				
			||||||
--- a/include/linux/pci.h
 | 
					--- a/include/linux/pci.h
 | 
				
			||||||
+++ b/include/linux/pci.h
 | 
					+++ b/include/linux/pci.h
 | 
				
			||||||
@@ -1177,6 +1177,8 @@ void pci_walk_bus(struct pci_bus *top, i
 | 
					@@ -1179,6 +1179,8 @@ void pci_walk_bus(struct pci_bus *top, i
 | 
				
			||||||
 		  void *userdata);
 | 
					 		  void *userdata);
 | 
				
			||||||
 int pci_cfg_space_size(struct pci_dev *dev);
 | 
					 int pci_cfg_space_size(struct pci_dev *dev);
 | 
				
			||||||
 unsigned char pci_bus_max_busnr(struct pci_bus *bus);
 | 
					 unsigned char pci_bus_max_busnr(struct pci_bus *bus);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -182,7 +182,7 @@
 | 
				
			|||||||
 mtd_pad_erasesize(struct mtd_info *mtd, int offset, int len)
 | 
					 mtd_pad_erasesize(struct mtd_info *mtd, int offset, int len)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	unsigned long mask = mtd->erasesize - 1;
 | 
					 	unsigned long mask = mtd->erasesize - 1;
 | 
				
			||||||
@@ -833,7 +833,6 @@ static void split_uimage(struct mtd_info
 | 
					@@ -792,7 +792,6 @@ static void split_uimage(struct mtd_info
 | 
				
			||||||
 		return;
 | 
					 		return;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	len = be32_to_cpu(hdr.size) + 0x40;
 | 
					 	len = be32_to_cpu(hdr.size) + 0x40;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
--- a/arch/arm/Kconfig
 | 
					--- a/arch/arm/Kconfig
 | 
				
			||||||
+++ b/arch/arm/Kconfig
 | 
					+++ b/arch/arm/Kconfig
 | 
				
			||||||
@@ -599,6 +599,18 @@ config ARCH_LPC32XX
 | 
					@@ -600,6 +600,18 @@ config ARCH_LPC32XX
 | 
				
			||||||
 	help
 | 
					 	help
 | 
				
			||||||
 	  Support for the NXP LPC32XX family of processors
 | 
					 	  Support for the NXP LPC32XX family of processors
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -19,7 +19,7 @@
 | 
				
			|||||||
 config ARCH_PXA
 | 
					 config ARCH_PXA
 | 
				
			||||||
 	bool "PXA2xx/PXA3xx-based"
 | 
					 	bool "PXA2xx/PXA3xx-based"
 | 
				
			||||||
 	depends on MMU
 | 
					 	depends on MMU
 | 
				
			||||||
@@ -897,6 +909,8 @@ source "arch/arm/mach-omap2/Kconfig"
 | 
					@@ -898,6 +910,8 @@ source "arch/arm/mach-omap2/Kconfig"
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 source "arch/arm/mach-orion5x/Kconfig"
 | 
					 source "arch/arm/mach-orion5x/Kconfig"
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,7 +15,7 @@
 | 
				
			|||||||
 	/* initialize internal qc */
 | 
					 	/* initialize internal qc */
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	/* XXX: Tag 0 is used for drivers with legacy EH as some
 | 
					 	/* XXX: Tag 0 is used for drivers with legacy EH as some
 | 
				
			||||||
@@ -4796,6 +4804,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
 | 
					@@ -4780,6 +4788,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
 | 
				
			||||||
 	if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
 | 
					 	if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
 | 
				
			||||||
 		return NULL;
 | 
					 		return NULL;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -25,7 +25,7 @@
 | 
				
			|||||||
 	/* libsas case */
 | 
					 	/* libsas case */
 | 
				
			||||||
 	if (ap->flags & ATA_FLAG_SAS_HOST) {
 | 
					 	if (ap->flags & ATA_FLAG_SAS_HOST) {
 | 
				
			||||||
 		tag = ata_sas_allocate_tag(ap);
 | 
					 		tag = ata_sas_allocate_tag(ap);
 | 
				
			||||||
@@ -4841,6 +4852,8 @@ void ata_qc_free(struct ata_queued_cmd *
 | 
					@@ -4825,6 +4836,8 @@ void ata_qc_free(struct ata_queued_cmd *
 | 
				
			||||||
 		qc->tag = ATA_TAG_POISON;
 | 
					 		qc->tag = ATA_TAG_POISON;
 | 
				
			||||||
 		if (ap->flags & ATA_FLAG_SAS_HOST)
 | 
					 		if (ap->flags & ATA_FLAG_SAS_HOST)
 | 
				
			||||||
 			ata_sas_free_tag(tag, ap);
 | 
					 			ata_sas_free_tag(tag, ap);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user