[openwrt/openwrt] kernel: bump 4.9 to 4.9.82

LEDE Commits lede-commits at lists.infradead.org
Sat Feb 17 18:40:31 PST 2018


stintel pushed a commit to openwrt/openwrt.git, branch master:
https://git.lede-project.org/f621b539512e5b6c83dd2de1bc2dba06e40cd7ea

commit f621b539512e5b6c83dd2de1bc2dba06e40cd7ea
Author: Stijn Tintel <stijn at linux-ipv6.be>
AuthorDate: Sun Feb 18 01:43:25 2018 +0100

    kernel: bump 4.9 to 4.9.82
    
    Refresh patches.
    Remove upstreamed patches:
    - ar7/002-MIPS-AR7-ensure-the-port-type-s-FCR-value-is-used.patch
    - backport/040-crypto-fix-typo-in-KPP-dependency-of-CRYPTO_ECDH.patch
    Remove layerscape/819-Revert-dmaengine-dmatest-move-callback-wait-queue-to.patch,
    it is superseded by upstream commit 297c7cc4b5651b174a62925b6c961085f04979fd.
    Remove pending/650-pppoe_header_pad.patch, it is superseded by
    upstream commit 1bd21b158e07e0b8c5a2ce832305a0ebfe42c480.
    Update patches that no longer apply:
    - ar71xx/004-register_gpio_driver_earlier.patch
    - hack/204-module_strip.patch
    - pending/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
    
    Fixes CVE-2017-8824.
    
    Compile-tested: ar71xx.
    Runtime-tested: ar71xx.
    
    Signed-off-by: Stijn Tintel <stijn at linux-ipv6.be>
---
 include/kernel-version.mk                          |   4 +-
 ...-ensure-the-port-type-s-FCR-value-is-used.patch |  48 --------
 .../004-register_gpio_driver_earlier.patch         |   5 +-
 .../patches-4.9/910-unaligned_access_hacks.patch   |  20 +--
 ...0121-ARM64-Make-it-work-again-on-4.9-1790.patch |  17 ---
 ...ify-at-boot-that-CMA-doesn-t-cross-a-256M.patch |   4 +-
 ...tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch |   4 +-
 ...fix-typo-in-KPP-dependency-of-CRYPTO_ECDH.patch |  25 ----
 .../090-net-generalize-napi_complete_done.patch    |   4 +-
 .../linux/generic/hack-4.9/204-module_strip.patch  |  26 ++--
 .../linux/generic/hack-4.9/902-debloat_proc.patch  |   2 +-
 ...c_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch |   2 +-
 ...bi-auto-create-ubiblock-device-for-rootfs.patch |   4 +-
 ...-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch |   2 +-
 .../generic/pending-4.9/650-pppoe_header_pad.patch |  29 -----
 ...80-NET-skip-GRO-for-foreign-MAC-addresses.patch |   8 +-
 .../generic/pending-4.9/834-ledtrig-libata.patch   |   8 +-
 .../generic/pending-4.9/920-mangle_bootargs.patch  |   2 +-
 .../ixp4xx/patches-4.9/160-delayed_uart_io.patch   |   4 +-
 .../202-core-linux-support-layerscape.patch        |   2 +-
 .../803-cpufreq-support-layerscape.patch           |   2 +-
 .../804-crypto-support-layerscape.patch            |  44 +++----
 ...ngine-dmatest-move-callback-wait-queue-to.patch | 134 ---------------------
 .../102-powerpc-add-cmdline-override.patch         |   2 +-
 ...eck-length-of-ID-before-reading-bits-per-.patch |   2 +-
 .../linux/ramips/patches-4.9/0040-nand-hack.patch  |   4 +-
 .../patches-4.9/0901-spansion_nand_id_fix.patch    |   4 +-
 27 files changed, 86 insertions(+), 326 deletions(-)

diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index 891205d..293100e 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -4,12 +4,12 @@ LINUX_RELEASE?=1
 
 LINUX_VERSION-3.18 = .71
 LINUX_VERSION-4.4 = .112
-LINUX_VERSION-4.9 = .77
+LINUX_VERSION-4.9 = .82
 LINUX_VERSION-4.14 = .20
 
 LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
 LINUX_KERNEL_HASH-4.4.112 = 544b42cbeed022896115c76a18fc97b4507d5b41d7ac0ce1dce9afd6ffd11ecd
-LINUX_KERNEL_HASH-4.9.77 = 7c29bc3fb96f1e23d98f664e786dddd53a1599f56431b9b7fdfba402a4b3705c
+LINUX_KERNEL_HASH-4.9.82 = 4b710b2701daafeb8e4db4c06f0ed3e62a6d20d6213a4927769c89ae42a9b180
 LINUX_KERNEL_HASH-4.14.20 = 4ab7f42aa6af9c1e3b00cba6b1fa305a87407666aaa2fae555f7fbdaafb6d292
 
 remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
diff --git a/target/linux/ar7/patches-4.9/002-MIPS-AR7-ensure-the-port-type-s-FCR-value-is-used.patch b/target/linux/ar7/patches-4.9/002-MIPS-AR7-ensure-the-port-type-s-FCR-value-is-used.patch
deleted file mode 100644
index cc1a541..0000000
--- a/target/linux/ar7/patches-4.9/002-MIPS-AR7-ensure-the-port-type-s-FCR-value-is-used.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From ee6c9d41de084b2cefd90e5e0c9f30a35f6d3967 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jonas.gorski at gmail.com>
-Date: Sun, 29 Oct 2017 15:50:42 +0100
-Subject: [PATCH RFC 3/3] MIPS: AR7: ensure the port type's FCR value is used
-
-Since commit aef9a7bd9b67 ("serial/uart/8250: Add tunable RX interrupt
-trigger I/F of FIFO buffers"), the port's default FCR value isn't used
-in serial8250_do_set_termios anymore, but copied over once in
-serial8250_config_port and then modified as needed.
-
-Unfortunately, serial8250_config_port will never be called if the port
-is shared between kernel and userspace, and the port's flag doesn't have
-UPF_BOOT_AUTOCONF, which would trigger a serial8250_config_port as well.
-
-This causes garbled output from userspace:
-
-[    5.220000] random: procd urandom read with 49 bits of entropy available
-ers
-   [kee
-
-Fix this by forcing it to be configured on boot, resulting in the
-expected output:
-
-[    5.250000] random: procd urandom read with 50 bits of entropy available
-Press the [f] key and hit [enter] to enter failsafe mode
-Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
-
-Fixes: aef9a7bd9b67 ("serial/uart/8250: Add tunable RX interrupt trigger I/F of FIFO buffers")
-Signed-off-by: Jonas Gorski <jonas.gorski at gmail.com>
----
-I'm not sure if this is just AR7's issue, or if this points to a general
-issue for UARTs used as kernel console and login console with the "fixed"
-commit.
-
- arch/mips/ar7/platform.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/mips/ar7/platform.c
-+++ b/arch/mips/ar7/platform.c
-@@ -576,7 +576,7 @@ static int __init ar7_register_uarts(voi
- 	uart_port.type		= PORT_AR7;
- 	uart_port.uartclk	= clk_get_rate(bus_clk) / 2;
- 	uart_port.iotype	= UPIO_MEM32;
--	uart_port.flags		= UPF_FIXED_TYPE;
-+	uart_port.flags		= UPF_FIXED_TYPE | UPF_BOOT_AUTOCONF;
- 	uart_port.regshift	= 2;
- 
- 	uart_port.line		= 0;
diff --git a/target/linux/ar71xx/patches-4.9/004-register_gpio_driver_earlier.patch b/target/linux/ar71xx/patches-4.9/004-register_gpio_driver_earlier.patch
index e6e972b..cc30e2d 100644
--- a/target/linux/ar71xx/patches-4.9/004-register_gpio_driver_earlier.patch
+++ b/target/linux/ar71xx/patches-4.9/004-register_gpio_driver_earlier.patch
@@ -3,7 +3,7 @@ from mach files succeed.
 
 --- a/drivers/gpio/gpio-ath79.c
 +++ b/drivers/gpio/gpio-ath79.c
-@@ -322,4 +322,8 @@ static struct platform_driver ath79_gpio
+@@ -322,7 +322,11 @@ static struct platform_driver ath79_gpio
  	.remove = ath79_gpio_remove,
  };
  
@@ -13,3 +13,6 @@ from mach files succeed.
 +	return platform_driver_register(&ath79_gpio_driver);
 +}
 +postcore_initcall(ath79_gpio_init);
+ 
+ MODULE_DESCRIPTION("Atheros AR71XX/AR724X/AR913X GPIO API support");
+ MODULE_LICENSE("GPL v2");
diff --git a/target/linux/ar71xx/patches-4.9/910-unaligned_access_hacks.patch b/target/linux/ar71xx/patches-4.9/910-unaligned_access_hacks.patch
index f26af24..a453752 100644
--- a/target/linux/ar71xx/patches-4.9/910-unaligned_access_hacks.patch
+++ b/target/linux/ar71xx/patches-4.9/910-unaligned_access_hacks.patch
@@ -267,7 +267,7 @@
  		case IPV6_2292HOPOPTS:
 --- a/net/ipv6/ip6_gre.c
 +++ b/net/ipv6/ip6_gre.c
-@@ -394,7 +394,7 @@ static void ip6gre_err(struct sk_buff *s
+@@ -395,7 +395,7 @@ static void ip6gre_err(struct sk_buff *s
  		return;
  	ipv6h = (const struct ipv6hdr *)skb->data;
  	greh = (const struct gre_base_hdr *)(skb->data + offset);
@@ -448,7 +448,7 @@
  		memcpy(p, foc->val, foc->len);
 --- a/net/ipv4/igmp.c
 +++ b/net/ipv4/igmp.c
-@@ -533,7 +533,7 @@ static struct sk_buff *add_grec(struct s
+@@ -537,7 +537,7 @@ static struct sk_buff *add_grec(struct s
  		if (!skb)
  			return NULL;
  		psrc = (__be32 *)skb_put(skb, sizeof(__be32));
@@ -621,7 +621,7 @@
  
  #define	IP6_MF		0x0001
  #define	IP6_OFFSET	0xFFF8
-@@ -449,8 +449,8 @@ static inline void __ipv6_addr_set_half(
+@@ -450,8 +450,8 @@ static inline void __ipv6_addr_set_half(
  	}
  #endif
  #endif
@@ -632,7 +632,7 @@
  }
  
  static inline void ipv6_addr_set(struct in6_addr *addr, 
-@@ -509,6 +509,8 @@ static inline bool ipv6_prefix_equal(con
+@@ -510,6 +510,8 @@ static inline bool ipv6_prefix_equal(con
  	const __be32 *a1 = addr1->s6_addr32;
  	const __be32 *a2 = addr2->s6_addr32;
  	unsigned int pdw, pbi;
@@ -641,7 +641,7 @@
  
  	/* check complete u32 in prefix */
  	pdw = prefixlen >> 5;
-@@ -517,7 +519,9 @@ static inline bool ipv6_prefix_equal(con
+@@ -518,7 +520,9 @@ static inline bool ipv6_prefix_equal(con
  
  	/* check incomplete u32 in prefix */
  	pbi = prefixlen & 0x1f;
@@ -652,7 +652,7 @@
  		return false;
  
  	return true;
-@@ -661,13 +665,13 @@ static inline void ipv6_addr_set_v4mappe
+@@ -662,13 +666,13 @@ static inline void ipv6_addr_set_v4mappe
   */
  static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen)
  {
@@ -668,7 +668,7 @@
  		if (xb)
  			return i * 32 + 31 - __fls(ntohl(xb));
  	}
-@@ -836,17 +840,18 @@ static inline int ip6_default_np_autolab
+@@ -837,17 +841,18 @@ static inline int ip6_default_np_autolab
  static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass,
  				__be32 flowlabel)
  {
@@ -888,7 +888,7 @@
  		*sum = csum_fold(csum_partial(diff, sizeof(diff),
 --- a/drivers/net/vxlan.c
 +++ b/drivers/net/vxlan.c
-@@ -1811,15 +1811,15 @@ static int vxlan_build_skb(struct sk_buf
+@@ -1789,15 +1789,15 @@ static int vxlan_build_skb(struct sk_buf
  		goto out_free;
  
  	vxh = (struct vxlanhdr *) __skb_push(skb, sizeof(*vxh));
@@ -938,7 +938,7 @@
  
 --- a/net/ipv4/tcp_offload.c
 +++ b/net/ipv4/tcp_offload.c
-@@ -215,7 +215,7 @@ struct sk_buff **tcp_gro_receive(struct
+@@ -218,7 +218,7 @@ struct sk_buff **tcp_gro_receive(struct
  
  		th2 = tcp_hdr(p);
  
@@ -947,7 +947,7 @@
  			NAPI_GRO_CB(p)->same_flow = 0;
  			continue;
  		}
-@@ -233,8 +233,8 @@ found:
+@@ -236,8 +236,8 @@ found:
  		  ~(TCP_FLAG_CWR | TCP_FLAG_FIN | TCP_FLAG_PSH));
  	flush |= (__force int)(th->ack_seq ^ th2->ack_seq);
  	for (i = sizeof(*th); i < thlen; i += 4)
diff --git a/target/linux/brcm2708/patches-4.9/950-0121-ARM64-Make-it-work-again-on-4.9-1790.patch b/target/linux/brcm2708/patches-4.9/950-0121-ARM64-Make-it-work-again-on-4.9-1790.patch
index 96b298d..8fea94d 100644
--- a/target/linux/brcm2708/patches-4.9/950-0121-ARM64-Make-it-work-again-on-4.9-1790.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0121-ARM64-Make-it-work-again-on-4.9-1790.patch
@@ -16,8 +16,6 @@ Signed-off-by: Michael Zoran <mzoran at crowfest.net>
  4 files changed, 48 insertions(+), 111 deletions(-)
  create mode 120000 arch/arm64/boot/dts/overlays
 
-diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
-index 7d213c2c..101794f 100644
 --- a/arch/arm64/Kconfig.platforms
 +++ b/arch/arm64/Kconfig.platforms
 @@ -1,27 +1,5 @@
@@ -48,8 +46,6 @@ index 7d213c2c..101794f 100644
  config ARCH_SUNXI
  	bool "Allwinner sunxi 64-bit SoC Family"
  	select GENERIC_IRQ_CHIP
-diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile
-index 2152448..7aa03be 100644
 --- a/arch/arm64/boot/dts/broadcom/Makefile
 +++ b/arch/arm64/boot/dts/broadcom/Makefile
 @@ -1,7 +1,15 @@
@@ -69,16 +65,6 @@ index 2152448..7aa03be 100644
  
  always		:= $(dtb-y)
  subdir-y	:= $(dts-dirs)
-diff --git a/arch/arm64/boot/dts/overlays b/arch/arm64/boot/dts/overlays
-new file mode 120000
-index 0000000..ded0864
---- /dev/null
-+++ b/arch/arm64/boot/dts/overlays
-@@ -0,0 +1 @@
-+../../../arm/boot/dts/overlays
-\ No newline at end of file
-diff --git a/arch/arm64/configs/bcmrpi3_defconfig b/arch/arm64/configs/bcmrpi3_defconfig
-index 53da5c7..c7e891d 100644
 --- a/arch/arm64/configs/bcmrpi3_defconfig
 +++ b/arch/arm64/configs/bcmrpi3_defconfig
 @@ -1,52 +1,9 @@
@@ -405,6 +391,3 @@ index 53da5c7..c7e891d 100644
  CONFIG_LIBCRC32C=y
 -CONFIG_BCM2708_VCHIQ=n
 -CONFIG_ARCH_BCM2835=y
--- 
-2.1.4
-
diff --git a/target/linux/brcm2708/patches-4.9/950-0182-drm-vc4-Verify-at-boot-that-CMA-doesn-t-cross-a-256M.patch b/target/linux/brcm2708/patches-4.9/950-0182-drm-vc4-Verify-at-boot-that-CMA-doesn-t-cross-a-256M.patch
index 453d027..f17293c 100644
--- a/target/linux/brcm2708/patches-4.9/950-0182-drm-vc4-Verify-at-boot-that-CMA-doesn-t-cross-a-256M.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0182-drm-vc4-Verify-at-boot-that-CMA-doesn-t-cross-a-256M.patch
@@ -37,7 +37,7 @@ Signed-off-by: Eric Anholt <eric at anholt.net>
  #include "linux/pm_runtime.h"
  #include "vc4_drv.h"
  #include "vc4_regs.h"
-@@ -185,8 +188,23 @@ static int vc4_v3d_bind(struct device *d
+@@ -188,8 +191,23 @@ static int vc4_v3d_bind(struct device *d
  	struct drm_device *drm = dev_get_drvdata(master);
  	struct vc4_dev *vc4 = to_vc4_dev(drm);
  	struct vc4_v3d *v3d = NULL;
@@ -76,4 +76,4 @@ Signed-off-by: Eric Anholt <eric at anholt.net>
 +EXPORT_SYMBOL(cma_get_size);
  
  static unsigned long cma_bitmap_aligned_mask(const struct cma *cma,
- 					     int align_order)
+ 					     unsigned int align_order)
diff --git a/target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch b/target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch
index 0acd008..87b5253 100644
--- a/target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch
+++ b/target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch
@@ -145,7 +145,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  
 --- a/net/ipv4/tcp_timer.c
 +++ b/net/ipv4/tcp_timer.c
-@@ -311,7 +311,7 @@ static void tcp_delack_timer(unsigned lo
+@@ -326,7 +326,7 @@ static void tcp_delack_timer(unsigned lo
  		inet_csk(sk)->icsk_ack.blocked = 1;
  		__NET_INC_STATS(sock_net(sk), LINUX_MIB_DELAYEDACKLOCKED);
  		/* deleguate our work to tcp_release_cb() */
@@ -154,7 +154,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  			sock_hold(sk);
  	}
  	bh_unlock_sock(sk);
-@@ -594,7 +594,7 @@ static void tcp_write_timer(unsigned lon
+@@ -609,7 +609,7 @@ static void tcp_write_timer(unsigned lon
  		tcp_write_timer_handler(sk);
  	} else {
  		/* delegate our work to tcp_release_cb() */
diff --git a/target/linux/generic/backport-4.9/040-crypto-fix-typo-in-KPP-dependency-of-CRYPTO_ECDH.patch b/target/linux/generic/backport-4.9/040-crypto-fix-typo-in-KPP-dependency-of-CRYPTO_ECDH.patch
deleted file mode 100644
index eaef5ca..0000000
--- a/target/linux/generic/backport-4.9/040-crypto-fix-typo-in-KPP-dependency-of-CRYPTO_ECDH.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 4b05f09db650d215632da97f2c25ceba8235102a Mon Sep 17 00:00:00 2001
-From: Hauke Mehrtens <hauke at hauke-m.de>
-Date: Sun, 26 Nov 2017 00:09:45 +0100
-Subject: [PATCH] crypto: fix typo in KPP dependency of CRYPTO_ECDH
-
-This fixes a typo in the CRYPTO_KPP dependency of CRYPTO_ECDH.
-
-Fixes: 3c4b23901a0c ("crypto: ecdh - Add ECDH software support")
-Cc: <stable at vger.kernel.org> # v4.8+
-Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
----
- crypto/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/crypto/Kconfig
-+++ b/crypto/Kconfig
-@@ -120,7 +120,7 @@ config CRYPTO_DH
- 
- config CRYPTO_ECDH
- 	tristate "ECDH algorithm"
--	select CRYTPO_KPP
-+	select CRYPTO_KPP
- 	help
- 	  Generic implementation of the ECDH algorithm
- 
diff --git a/target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch b/target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch
index 5c6e334..d68670e 100644
--- a/target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch
+++ b/target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch
@@ -1040,7 +1040,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  		writel(irq->mask, adpt->base + EMAC_INT_MASK);
 --- a/drivers/net/ethernet/realtek/r8169.c
 +++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -7579,7 +7579,7 @@ static int rtl8169_poll(struct napi_stru
+@@ -7574,7 +7574,7 @@ static int rtl8169_poll(struct napi_stru
  	}
  
  	if (work_done < budget) {
@@ -1379,7 +1379,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  		 */
 --- a/drivers/net/xen-netfront.c
 +++ b/drivers/net/xen-netfront.c
-@@ -1059,7 +1059,7 @@ err:
+@@ -1061,7 +1061,7 @@ err:
  	if (work_done < budget) {
  		int more_to_do = 0;
  
diff --git a/target/linux/generic/hack-4.9/204-module_strip.patch b/target/linux/generic/hack-4.9/204-module_strip.patch
index e36846a..3dc0c88 100644
--- a/target/linux/generic/hack-4.9/204-module_strip.patch
+++ b/target/linux/generic/hack-4.9/204-module_strip.patch
@@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -2115,6 +2115,13 @@ config TRIM_UNUSED_KSYMS
+@@ -2122,6 +2122,13 @@ config TRIM_UNUSED_KSYMS
  
  	  If unsure, or if you need to build out-of-tree modules, say N.
  
@@ -114,7 +114,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  config MODULES_TREE_LOOKUP
 --- a/kernel/module.c
 +++ b/kernel/module.c
-@@ -2945,9 +2945,11 @@ static struct module *setup_load_info(st
+@@ -2954,9 +2954,11 @@ static struct module *setup_load_info(st
  
  static int check_modinfo(struct module *mod, struct load_info *info, int flags)
  {
@@ -127,14 +127,14 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (flags & MODULE_INIT_IGNORE_VERMAGIC)
  		modmagic = NULL;
  
-@@ -2968,6 +2970,7 @@ static int check_modinfo(struct module *
+@@ -2977,6 +2979,7 @@ static int check_modinfo(struct module *
  				mod->name);
  		add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
  	}
 +#endif
  
- 	if (get_modinfo(info, "staging")) {
- 		add_taint_module(mod, TAINT_CRAP, LOCKDEP_STILL_OK);
+ 	check_modinfo_retpoline(mod, info);
+ 
 --- a/scripts/mod/modpost.c
 +++ b/scripts/mod/modpost.c
 @@ -1965,7 +1965,9 @@ static void read_symbols(char *modname)
@@ -157,7 +157,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	buf_printf(b, "\n");
  	buf_printf(b, "__visible struct module __this_module\n");
  	buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n");
-@@ -2126,16 +2130,20 @@ static void add_header(struct buffer *b,
+@@ -2126,24 +2130,30 @@ static void add_header(struct buffer *b,
  
  static void add_intree_flag(struct buffer *b, int is_intree)
  {
@@ -167,6 +167,16 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +#endif
  }
  
+ /* Cannot check for assembler */
+ static void add_retpoline(struct buffer *b)
+ {
++#ifndef CONFIG_MODULE_STRIPPED
+ 	buf_printf(b, "\n#ifdef RETPOLINE\n");
+ 	buf_printf(b, "MODULE_INFO(retpoline, \"Y\");\n");
+ 	buf_printf(b, "#endif\n");
++#endif
+ }
+ 
  static void add_staging_flag(struct buffer *b, const char *name)
  {
 +#ifndef CONFIG_MODULE_STRIPPED
@@ -178,7 +188,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  /* In kernel, this size is defined in linux/module.h;
-@@ -2239,11 +2247,13 @@ static void add_depends(struct buffer *b
+@@ -2247,11 +2257,13 @@ static void add_depends(struct buffer *b
  
  static void add_srcversion(struct buffer *b, struct module *mod)
  {
@@ -192,7 +202,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  static void write_if_changed(struct buffer *b, const char *fname)
-@@ -2477,7 +2487,9 @@ int main(int argc, char **argv)
+@@ -2486,7 +2498,9 @@ int main(int argc, char **argv)
  		add_staging_flag(&buf, mod->name);
  		err |= add_versions(&buf, mod);
  		add_depends(&buf, mod, modules);
diff --git a/target/linux/generic/hack-4.9/902-debloat_proc.patch b/target/linux/generic/hack-4.9/902-debloat_proc.patch
index 6216c2d..f2b326f 100644
--- a/target/linux/generic/hack-4.9/902-debloat_proc.patch
+++ b/target/linux/generic/hack-4.9/902-debloat_proc.patch
@@ -132,7 +132,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	do {								\
 --- a/ipc/msg.c
 +++ b/ipc/msg.c
-@@ -1058,6 +1058,9 @@ void __init msg_init(void)
+@@ -1061,6 +1061,9 @@ void __init msg_init(void)
  {
  	msg_init_ns(&init_ipc_ns);
  
diff --git a/target/linux/generic/pending-4.9/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch b/target/linux/generic/pending-4.9/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
index 794280e..adae2e0 100644
--- a/target/linux/generic/pending-4.9/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
+++ b/target/linux/generic/pending-4.9/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
@@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO at vplace.de>
 
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
-@@ -5923,7 +5923,7 @@ static void __ref alloc_node_mem_map(str
+@@ -5918,7 +5918,7 @@ static void __ref alloc_node_mem_map(str
  		mem_map = NODE_DATA(0)->node_mem_map;
  #if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
  		if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
diff --git a/target/linux/generic/pending-4.9/491-ubi-auto-create-ubiblock-device-for-rootfs.patch b/target/linux/generic/pending-4.9/491-ubi-auto-create-ubiblock-device-for-rootfs.patch
index 2e7933b..adc653d 100644
--- a/target/linux/generic/pending-4.9/491-ubi-auto-create-ubiblock-device-for-rootfs.patch
+++ b/target/linux/generic/pending-4.9/491-ubi-auto-create-ubiblock-device-for-rootfs.patch
@@ -8,7 +8,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
 
 --- a/drivers/mtd/ubi/block.c
 +++ b/drivers/mtd/ubi/block.c
-@@ -627,6 +627,44 @@ static void __init ubiblock_create_from_
+@@ -635,6 +635,44 @@ static void __init ubiblock_create_from_
  	}
  }
  
@@ -53,7 +53,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  static void ubiblock_remove_all(void)
  {
  	struct ubiblock *next;
-@@ -657,6 +695,10 @@ int __init ubiblock_init(void)
+@@ -667,6 +705,10 @@ int __init ubiblock_init(void)
  	 */
  	ubiblock_create_from_param();
  
diff --git a/target/linux/generic/pending-4.9/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch b/target/linux/generic/pending-4.9/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
index e41dca6..8b8bef2 100644
--- a/target/linux/generic/pending-4.9/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
+++ b/target/linux/generic/pending-4.9/493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch
@@ -17,9 +17,9 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  #include "ubi-media.h"
  #include "ubi.h"
 @@ -447,6 +448,15 @@ int ubiblock_create(struct ubi_volume_in
- 	add_disk(dev->gd);
  	dev_info(disk_to_dev(dev->gd), "created from ubi%d:%d(%s)",
  		 dev->ubi_num, dev->vol_id, vi->name);
+ 	mutex_unlock(&devices_mutex);
 +
 +	if (!strcmp(vi->name, "rootfs") &&
 +	    IS_ENABLED(CONFIG_MTD_ROOTFS_ROOT_DEV) &&
diff --git a/target/linux/generic/pending-4.9/650-pppoe_header_pad.patch b/target/linux/generic/pending-4.9/650-pppoe_header_pad.patch
deleted file mode 100644
index 3115073..0000000
--- a/target/linux/generic/pending-4.9/650-pppoe_header_pad.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From: Felix Fietkau <nbd at nbd.name>
-Subject: pppoe: add extra padding for the header (useful for drivers that need headroom)
-
-lede-commit 6517a757ec711fc3354b857e273e2621042f3c7a
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
----
- drivers/net/ppp/pppoe.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/net/ppp/pppoe.c
-+++ b/drivers/net/ppp/pppoe.c
-@@ -861,7 +861,7 @@ static int pppoe_sendmsg(struct socket *
- 		goto end;
- 
- 
--	skb = sock_wmalloc(sk, total_len + dev->hard_header_len + 32,
-+	skb = sock_wmalloc(sk, total_len + dev->hard_header_len + 32 + NET_SKB_PAD,
- 			   0, GFP_KERNEL);
- 	if (!skb) {
- 		error = -ENOMEM;
-@@ -869,7 +869,7 @@ static int pppoe_sendmsg(struct socket *
- 	}
- 
- 	/* Reserve space for headers. */
--	skb_reserve(skb, dev->hard_header_len);
-+	skb_reserve(skb, dev->hard_header_len + NET_SKB_PAD);
- 	skb_reset_network_header(skb);
- 
- 	skb->dev = dev;
diff --git a/target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
index bd2ffe3..ce13e71 100644
--- a/target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
+++ b/target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
@@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	__u16			tc_index;	/* traffic control index */
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -4524,6 +4524,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4535,6 +4535,9 @@ static enum gro_result dev_gro_receive(s
  	enum gro_result ret;
  	int grow;
  
@@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!(skb->dev->features & NETIF_F_GRO))
  		goto normal;
  
-@@ -5812,6 +5815,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -5823,6 +5826,48 @@ static void __netdev_adjacent_dev_unlink
  					   &upper_dev->adj_list.lower);
  }
  
@@ -93,7 +93,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static int __netdev_upper_dev_link(struct net_device *dev,
  				   struct net_device *upper_dev, bool master,
  				   void *upper_priv, void *upper_info)
-@@ -6010,6 +6055,8 @@ void netdev_upper_dev_unlink(struct net_
+@@ -6021,6 +6066,8 @@ void netdev_upper_dev_unlink(struct net_
  	list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
  		__netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr);
  
@@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
  				      &changeupper_info.info);
  }
-@@ -6610,6 +6657,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6621,6 +6668,7 @@ int dev_set_mac_address(struct net_devic
  	if (err)
  		return err;
  	dev->addr_assign_type = NET_ADDR_SET;
diff --git a/target/linux/generic/pending-4.9/834-ledtrig-libata.patch b/target/linux/generic/pending-4.9/834-ledtrig-libata.patch
index 44ee23f..50eaa52 100644
--- a/target/linux/generic/pending-4.9/834-ledtrig-libata.patch
+++ b/target/linux/generic/pending-4.9/834-ledtrig-libata.patch
@@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  /**
   *	ata_build_rw_tf - Build ATA taskfile for given read/write request
   *	@tf: Target ATA taskfile
-@@ -4963,6 +4976,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
+@@ -4964,6 +4977,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
  		if (tag < 0)
  			return NULL;
  	}
@@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  
  	qc = __ata_qc_from_tag(ap, tag);
  	qc->tag = tag;
-@@ -5865,6 +5881,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5866,6 +5882,9 @@ struct ata_port *ata_port_alloc(struct a
  	ap->stats.unhandled_irq = 1;
  	ap->stats.idle_irq = 1;
  #endif
@@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  	ata_sff_port_init(ap);
  
  	return ap;
-@@ -5886,6 +5905,12 @@ static void ata_host_release(struct devi
+@@ -5887,6 +5906,12 @@ static void ata_host_release(struct devi
  
  		kfree(ap->pmp_link);
  		kfree(ap->slave_link);
@@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel at makrotopia.org>
  		kfree(ap);
  		host->ports[i] = NULL;
  	}
-@@ -6332,7 +6357,23 @@ int ata_host_register(struct ata_host *h
+@@ -6333,7 +6358,23 @@ int ata_host_register(struct ata_host *h
  		host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
  		host->ports[i]->local_port_no = i + 1;
  	}
diff --git a/target/linux/generic/pending-4.9/920-mangle_bootargs.patch b/target/linux/generic/pending-4.9/920-mangle_bootargs.patch
index bdf8c0d..ec2f340 100644
--- a/target/linux/generic/pending-4.9/920-mangle_bootargs.patch
+++ b/target/linux/generic/pending-4.9/920-mangle_bootargs.patch
@@ -13,7 +13,7 @@ Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
 
 --- a/init/Kconfig
 +++ b/init/Kconfig
-@@ -1687,6 +1687,15 @@ config EMBEDDED
+@@ -1694,6 +1694,15 @@ config EMBEDDED
  	  an embedded system so certain expert options are available
  	  for configuration.
  
diff --git a/target/linux/ixp4xx/patches-4.9/160-delayed_uart_io.patch b/target/linux/ixp4xx/patches-4.9/160-delayed_uart_io.patch
index 1ac9e5f..3ca1f36 100644
--- a/target/linux/ixp4xx/patches-4.9/160-delayed_uart_io.patch
+++ b/target/linux/ixp4xx/patches-4.9/160-delayed_uart_io.patch
@@ -18,7 +18,7 @@
  		uart->capabilities	= up->capabilities;
 --- a/drivers/tty/serial/serial_core.c
 +++ b/drivers/tty/serial/serial_core.c
-@@ -2229,6 +2229,7 @@ uart_report_port(struct uart_driver *drv
+@@ -2231,6 +2231,7 @@ uart_report_port(struct uart_driver *drv
  		snprintf(address, sizeof(address),
  			 "I/O 0x%lx offset 0x%x", port->iobase, port->hub6);
  		break;
@@ -26,7 +26,7 @@
  	case UPIO_MEM:
  	case UPIO_MEM16:
  	case UPIO_MEM32:
-@@ -2893,6 +2894,7 @@ int uart_match_port(struct uart_port *po
+@@ -2895,6 +2896,7 @@ int uart_match_port(struct uart_port *po
  	case UPIO_HUB6:
  		return (port1->iobase == port2->iobase) &&
  		       (port1->hub6   == port2->hub6);
diff --git a/target/linux/layerscape/patches-4.9/202-core-linux-support-layerscape.patch b/target/linux/layerscape/patches-4.9/202-core-linux-support-layerscape.patch
index 158ce0c..9dcecb0 100644
--- a/target/linux/layerscape/patches-4.9/202-core-linux-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.9/202-core-linux-support-layerscape.patch
@@ -421,7 +421,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
   *	These are the defined Ethernet Protocol ID's.
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -6604,9 +6604,18 @@ int dev_set_mtu(struct net_device *dev,
+@@ -6615,9 +6615,18 @@ int dev_set_mtu(struct net_device *dev,
  	if (new_mtu == dev->mtu)
  		return 0;
  
diff --git a/target/linux/layerscape/patches-4.9/803-cpufreq-support-layerscape.patch b/target/linux/layerscape/patches-4.9/803-cpufreq-support-layerscape.patch
index 2da45b6..465f909 100644
--- a/target/linux/layerscape/patches-4.9/803-cpufreq-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.9/803-cpufreq-support-layerscape.patch
@@ -17,7 +17,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
 
 --- a/drivers/cpufreq/Kconfig
 +++ b/drivers/cpufreq/Kconfig
-@@ -332,7 +332,7 @@ endif
+@@ -334,7 +334,7 @@ endif
  
  config QORIQ_CPUFREQ
  	tristate "CPU frequency scaling driver for Freescale QorIQ SoCs"
diff --git a/target/linux/layerscape/patches-4.9/804-crypto-support-layerscape.patch b/target/linux/layerscape/patches-4.9/804-crypto-support-layerscape.patch
index c456eb8..2598cde 100644
--- a/target/linux/layerscape/patches-4.9/804-crypto-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.9/804-crypto-support-layerscape.patch
@@ -781,7 +781,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  };
  
  struct tcrypt_result {
-@@ -1331,6 +1331,10 @@ static int do_test(const char *alg, u32
+@@ -1333,6 +1333,10 @@ static int do_test(const char *alg, u32
  		ret += tcrypt_test("hmac(sha3-512)");
  		break;
  
@@ -792,7 +792,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  	case 150:
  		ret += tcrypt_test("ansi_cprng");
  		break;
-@@ -1392,6 +1396,9 @@ static int do_test(const char *alg, u32
+@@ -1394,6 +1398,9 @@ static int do_test(const char *alg, u32
  	case 190:
  		ret += tcrypt_test("authenc(hmac(sha512),cbc(des3_ede))");
  		break;
@@ -802,7 +802,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  	case 200:
  		test_cipher_speed("ecb(aes)", ENCRYPT, sec, NULL, 0,
  				speed_template_16_24_32);
-@@ -1406,9 +1413,9 @@ static int do_test(const char *alg, u32
+@@ -1408,9 +1415,9 @@ static int do_test(const char *alg, u32
  		test_cipher_speed("lrw(aes)", DECRYPT, sec, NULL, 0,
  				speed_template_32_40_48);
  		test_cipher_speed("xts(aes)", ENCRYPT, sec, NULL, 0,
@@ -814,7 +814,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  		test_cipher_speed("cts(cbc(aes))", ENCRYPT, sec, NULL, 0,
  				speed_template_16_24_32);
  		test_cipher_speed("cts(cbc(aes))", DECRYPT, sec, NULL, 0,
-@@ -1839,9 +1846,9 @@ static int do_test(const char *alg, u32
+@@ -1841,9 +1848,9 @@ static int do_test(const char *alg, u32
  		test_acipher_speed("lrw(aes)", DECRYPT, sec, NULL, 0,
  				   speed_template_32_40_48);
  		test_acipher_speed("xts(aes)", ENCRYPT, sec, NULL, 0,
@@ -23462,7 +23462,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  
  /*
   * Descriptor to instantiate RNG State Handle 0 in normal mode and
-@@ -270,7 +271,7 @@ static int deinstantiate_rng(struct devi
+@@ -274,7 +275,7 @@ static int deinstantiate_rng(struct devi
  		/*
  		 * If the corresponding bit is set, then it means the state
  		 * handle was initialized by us, and thus it needs to be
@@ -23471,7 +23471,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  		 */
  		if ((1 << sh_idx) & state_handle_mask) {
  			/*
-@@ -303,20 +304,24 @@ static int caam_remove(struct platform_d
+@@ -307,20 +308,24 @@ static int caam_remove(struct platform_d
  	struct device *ctrldev;
  	struct caam_drv_private *ctrlpriv;
  	struct caam_ctrl __iomem *ctrl;
@@ -23504,7 +23504,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  		deinstantiate_rng(ctrldev, ctrlpriv->rng4_sh_init);
  
  	/* Shut down debug views */
-@@ -331,8 +336,8 @@ static int caam_remove(struct platform_d
+@@ -335,8 +340,8 @@ static int caam_remove(struct platform_d
  	clk_disable_unprepare(ctrlpriv->caam_ipg);
  	clk_disable_unprepare(ctrlpriv->caam_mem);
  	clk_disable_unprepare(ctrlpriv->caam_aclk);
@@ -23515,7 +23515,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  	return 0;
  }
  
-@@ -366,11 +371,8 @@ static void kick_trng(struct platform_de
+@@ -370,11 +375,8 @@ static void kick_trng(struct platform_de
  	 */
  	val = (rd_reg32(&r4tst->rtsdctl) & RTSDCTL_ENT_DLY_MASK)
  	      >> RTSDCTL_ENT_DLY_SHIFT;
@@ -23529,7 +23529,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  
  	val = rd_reg32(&r4tst->rtsdctl);
  	val = (val & ~RTSDCTL_ENT_DLY_MASK) |
-@@ -382,15 +384,12 @@ static void kick_trng(struct platform_de
+@@ -386,15 +388,12 @@ static void kick_trng(struct platform_de
  	wr_reg32(&r4tst->rtfrqmax, RTFRQMAX_DISABLE);
  	/* read the control register */
  	val = rd_reg32(&r4tst->rtmctl);
@@ -23548,7 +23548,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  }
  
  /**
-@@ -411,28 +410,26 @@ int caam_get_era(void)
+@@ -415,28 +414,26 @@ int caam_get_era(void)
  }
  EXPORT_SYMBOL(caam_get_era);
  
@@ -23592,7 +23592,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  	struct device *dev;
  	struct device_node *nprop, *np;
  	struct caam_ctrl __iomem *ctrl;
-@@ -452,9 +449,10 @@ static int caam_probe(struct platform_de
+@@ -456,9 +453,10 @@ static int caam_probe(struct platform_de
  
  	dev = &pdev->dev;
  	dev_set_drvdata(dev, ctrlpriv);
@@ -23604,7 +23604,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  	/* Enable clocking */
  	clk = caam_drv_identify_clk(&pdev->dev, "ipg");
  	if (IS_ERR(clk)) {
-@@ -483,14 +481,16 @@ static int caam_probe(struct platform_de
+@@ -487,14 +485,16 @@ static int caam_probe(struct platform_de
  	}
  	ctrlpriv->caam_aclk = clk;
  
@@ -23628,7 +23628,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  
  	ret = clk_prepare_enable(ctrlpriv->caam_ipg);
  	if (ret < 0) {
-@@ -511,11 +511,13 @@ static int caam_probe(struct platform_de
+@@ -515,11 +515,13 @@ static int caam_probe(struct platform_de
  		goto disable_caam_mem;
  	}
  
@@ -23647,7 +23647,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  	}
  
  	/* Get configuration properties from device tree */
-@@ -542,13 +544,13 @@ static int caam_probe(struct platform_de
+@@ -546,13 +548,13 @@ static int caam_probe(struct platform_de
  	else
  		BLOCK_OFFSET = PG_SIZE_64K;
  
@@ -23666,7 +23666,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  			 BLOCK_OFFSET * DECO_BLOCK_NUMBER
  			 );
  
-@@ -557,12 +559,17 @@ static int caam_probe(struct platform_de
+@@ -561,12 +563,17 @@ static int caam_probe(struct platform_de
  
  	/*
  	 * Enable DECO watchdogs and, if this is a PHYS_ADDR_T_64BIT kernel,
@@ -23689,7 +23689,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  
  	/*
  	 *  Read the Compile Time paramters and SCFGR to determine
-@@ -590,64 +597,69 @@ static int caam_probe(struct platform_de
+@@ -594,64 +601,69 @@ static int caam_probe(struct platform_de
  			      JRSTART_JR1_START | JRSTART_JR2_START |
  			      JRSTART_JR3_START);
  
@@ -23797,7 +23797,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  	}
  
  	/* If no QI and no rings specified, quit and go home */
-@@ -662,8 +674,10 @@ static int caam_probe(struct platform_de
+@@ -666,8 +678,10 @@ static int caam_probe(struct platform_de
  	/*
  	 * If SEC has RNG version >= 4 and RNG state handle has not been
  	 * already instantiated, do RNG instantiation
@@ -23809,7 +23809,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  		ctrlpriv->rng4_sh_init =
  			rd_reg32(&ctrl->r4tst[0].rdsta);
  		/*
-@@ -730,78 +744,47 @@ static int caam_probe(struct platform_de
+@@ -734,78 +748,47 @@ static int caam_probe(struct platform_de
  
  	/* Report "alive" for developer to see */
  	dev_info(dev, "device ID = 0x%016llx (Era %d)\n", caam_id,
@@ -23923,7 +23923,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  	ctrlpriv->ctl_kek_wrap.size = KEK_KEY_SIZE * sizeof(u32);
  	ctrlpriv->ctl_kek = debugfs_create_blob("kek",
  						S_IRUSR |
-@@ -809,7 +792,7 @@ static int caam_probe(struct platform_de
+@@ -813,7 +796,7 @@ static int caam_probe(struct platform_de
  						ctrlpriv->ctl,
  						&ctrlpriv->ctl_kek_wrap);
  
@@ -23932,7 +23932,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  	ctrlpriv->ctl_tkek_wrap.size = KEK_KEY_SIZE * sizeof(u32);
  	ctrlpriv->ctl_tkek = debugfs_create_blob("tkek",
  						 S_IRUSR |
-@@ -817,7 +800,7 @@ static int caam_probe(struct platform_de
+@@ -821,7 +804,7 @@ static int caam_probe(struct platform_de
  						 ctrlpriv->ctl,
  						 &ctrlpriv->ctl_tkek_wrap);
  
@@ -23941,7 +23941,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  	ctrlpriv->ctl_tdsk_wrap.size = KEK_KEY_SIZE * sizeof(u32);
  	ctrlpriv->ctl_tdsk = debugfs_create_blob("tdsk",
  						 S_IRUSR |
-@@ -828,13 +811,17 @@ static int caam_probe(struct platform_de
+@@ -832,13 +815,17 @@ static int caam_probe(struct platform_de
  	return 0;
  
  caam_remove:
@@ -23960,7 +23960,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu at nxp.com>
  disable_caam_aclk:
  	clk_disable_unprepare(ctrlpriv->caam_aclk);
  disable_caam_mem:
-@@ -844,17 +831,6 @@ disable_caam_ipg:
+@@ -848,17 +835,6 @@ disable_caam_ipg:
  	return ret;
  }
  
diff --git a/target/linux/layerscape/patches-4.9/819-Revert-dmaengine-dmatest-move-callback-wait-queue-to.patch b/target/linux/layerscape/patches-4.9/819-Revert-dmaengine-dmatest-move-callback-wait-queue-to.patch
deleted file mode 100644
index a8e8ad5..0000000
--- a/target/linux/layerscape/patches-4.9/819-Revert-dmaengine-dmatest-move-callback-wait-queue-to.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From 8772422ee95b17d87b5cb6cb4318b7ec73f4cfcf Mon Sep 17 00:00:00 2001
-From: Yangbo Lu <yangbo.lu at nxp.com>
-Date: Mon, 29 Jan 2018 18:04:07 +0800
-Subject: [PATCH] Revert "dmaengine: dmatest: move callback wait queue to
- thread context"
-
-This reverts commit 679dbeac0b6bb551e1f3b95673695b22b2ac953d.
----
- drivers/dma/dmatest.c | 55 ++++++++++++++++++++++-----------------------------
- 1 file changed, 24 insertions(+), 31 deletions(-)
-
---- a/drivers/dma/dmatest.c
-+++ b/drivers/dma/dmatest.c
-@@ -158,12 +158,6 @@ MODULE_PARM_DESC(run, "Run the test (def
- #define PATTERN_OVERWRITE	0x20
- #define PATTERN_COUNT_MASK	0x1f
- 
--/* poor man's completion - we want to use wait_event_freezable() on it */
--struct dmatest_done {
--	bool			done;
--	wait_queue_head_t	*wait;
--};
--
- struct dmatest_thread {
- 	struct list_head	node;
- 	struct dmatest_info	*info;
-@@ -172,8 +166,6 @@ struct dmatest_thread {
- 	u8			**srcs;
- 	u8			**dsts;
- 	enum dma_transaction_type type;
--	wait_queue_head_t done_wait;
--	struct dmatest_done test_done;
- 	bool			done;
- };
- 
-@@ -334,25 +326,18 @@ static unsigned int dmatest_verify(u8 **
- 	return error_count;
- }
- 
-+/* poor man's completion - we want to use wait_event_freezable() on it */
-+struct dmatest_done {
-+	bool			done;
-+	wait_queue_head_t	*wait;
-+};
- 
- static void dmatest_callback(void *arg)
- {
- 	struct dmatest_done *done = arg;
--	struct dmatest_thread *thread =
--		container_of(arg, struct dmatest_thread, done_wait);
--	if (!thread->done) {
--		done->done = true;
--		wake_up_all(done->wait);
--	} else {
--		/*
--		 * If thread->done, it means that this callback occurred
--		 * after the parent thread has cleaned up. This can
--		 * happen in the case that driver doesn't implement
--		 * the terminate_all() functionality and a dma operation
--		 * did not occur within the timeout period
--		 */
--		WARN(1, "dmatest: Kernel memory may be corrupted!!\n");
--	}
-+
-+	done->done = true;
-+	wake_up_all(done->wait);
- }
- 
- static unsigned int min_odd(unsigned int x, unsigned int y)
-@@ -423,8 +408,9 @@ static unsigned long long dmatest_KBs(s6
-  */
- static int dmatest_func(void *data)
- {
-+	DECLARE_WAIT_QUEUE_HEAD_ONSTACK(done_wait);
- 	struct dmatest_thread	*thread = data;
--	struct dmatest_done	*done = &thread->test_done;
-+	struct dmatest_done	done = { .wait = &done_wait };
- 	struct dmatest_info	*info;
- 	struct dmatest_params	*params;
- 	struct dma_chan		*chan;
-@@ -651,9 +637,9 @@ static int dmatest_func(void *data)
- 			continue;
- 		}
- 
--		done->done = false;
-+		done.done = false;
- 		tx->callback = dmatest_callback;
--		tx->callback_param = done;
-+		tx->callback_param = &done;
- 		cookie = tx->tx_submit(tx);
- 
- 		if (dma_submit_error(cookie)) {
-@@ -666,12 +652,21 @@ static int dmatest_func(void *data)
- 		}
- 		dma_async_issue_pending(chan);
- 
--		wait_event_freezable_timeout(thread->done_wait, done->done,
-+		wait_event_freezable_timeout(done_wait, done.done,
- 					     msecs_to_jiffies(params->timeout));
- 
- 		status = dma_async_is_tx_complete(chan, cookie, NULL, NULL);
- 
--		if (!done->done) {
-+		if (!done.done) {
-+			/*
-+			 * We're leaving the timed out dma operation with
-+			 * dangling pointer to done_wait.  To make this
-+			 * correct, we'll need to allocate wait_done for
-+			 * each test iteration and perform "who's gonna
-+			 * free it this time?" dancing.  For now, just
-+			 * leave it dangling.
-+			 */
-+			WARN(1, "dmatest: Kernel stack may be corrupted!!\n");
- 			dmaengine_unmap_put(um);
- 			result("test timed out", total_tests, src_off, dst_off,
- 			       len, 0);
-@@ -752,7 +747,7 @@ err_thread_type:
- 		dmatest_KBs(runtime, total_len), ret);
- 
- 	/* terminate all transfers on specified channels */
--	if (ret || failed_tests)
-+	if (ret)
- 		dmaengine_terminate_all(chan);
- 
- 	thread->done = true;
-@@ -812,8 +807,6 @@ static int dmatest_add_threads(struct dm
- 		thread->info = info;
- 		thread->chan = dtc->chan;
- 		thread->type = type;
--		thread->test_done.wait = &thread->done_wait;
--		init_waitqueue_head(&thread->done_wait);
- 		smp_wmb();
- 		thread->task = kthread_create(dmatest_func, thread, "%s-%s%u",
- 				dma_chan_name(chan), op, i);
diff --git a/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch b/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
index 3d59927..c70ac1b 100644
--- a/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
+++ b/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
@@ -1,6 +1,6 @@
 --- a/arch/powerpc/Kconfig
 +++ b/arch/powerpc/Kconfig
-@@ -707,6 +707,14 @@ config CMDLINE_FORCE
+@@ -708,6 +708,14 @@ config CMDLINE_FORCE
  	  This is useful if you cannot or don't want to change the
  	  command-line options your boot loader passes to the kernel.
  
diff --git a/target/linux/pistachio/patches-4.9/411-mtd-nand-Check-length-of-ID-before-reading-bits-per-.patch b/target/linux/pistachio/patches-4.9/411-mtd-nand-Check-length-of-ID-before-reading-bits-per-.patch
index f360613..6ffac4d 100644
--- a/target/linux/pistachio/patches-4.9/411-mtd-nand-Check-length-of-ID-before-reading-bits-per-.patch
+++ b/target/linux/pistachio/patches-4.9/411-mtd-nand-Check-length-of-ID-before-reading-bits-per-.patch
@@ -21,7 +21,7 @@ Signed-off-by: Ezequiel Garcia <ezequiel.garcia at imgtec.com>
 
 --- a/drivers/mtd/nand/nand_base.c
 +++ b/drivers/mtd/nand/nand_base.c
-@@ -4043,7 +4043,8 @@ static bool find_full_id_nand(struct mtd
+@@ -4046,7 +4046,8 @@ static bool find_full_id_nand(struct mtd
  		mtd->erasesize = type->erasesize;
  		mtd->oobsize = type->oobsize;
  
diff --git a/target/linux/ramips/patches-4.9/0040-nand-hack.patch b/target/linux/ramips/patches-4.9/0040-nand-hack.patch
index e0bd5f6..5bc00b1 100644
--- a/target/linux/ramips/patches-4.9/0040-nand-hack.patch
+++ b/target/linux/ramips/patches-4.9/0040-nand-hack.patch
@@ -18,7 +18,7 @@
  			if (ret < 0) {
  				if (use_bufpoi)
  					/* Invalidate page cache */
-@@ -3206,8 +3210,11 @@ int nand_erase_nand(struct mtd_info *mtd
+@@ -3209,8 +3213,11 @@ int nand_erase_nand(struct mtd_info *mtd
  		    (page + pages_per_block))
  			chip->pagebuf = -1;
  
@@ -31,7 +31,7 @@
  		/*
  		 * See if operation failed and additional status checks are
  		 * available
-@@ -4401,6 +4408,7 @@ int nand_scan_ident(struct mtd_info *mtd
+@@ -4404,6 +4411,7 @@ int nand_scan_ident(struct mtd_info *mtd
  		 * cmdfunc() both expect cmd_ctrl() to be populated,
  		 * so we need to check that that's the case
  		 */
diff --git a/target/linux/ramips/patches-4.9/0901-spansion_nand_id_fix.patch b/target/linux/ramips/patches-4.9/0901-spansion_nand_id_fix.patch
index daaa0ac..fa5b127 100644
--- a/target/linux/ramips/patches-4.9/0901-spansion_nand_id_fix.patch
+++ b/target/linux/ramips/patches-4.9/0901-spansion_nand_id_fix.patch
@@ -13,7 +13,7 @@ Signed-off-by: Nikolay Martynov <mar.kolya at gmail.com>
 
 --- a/drivers/mtd/nand/nand_base.c
 +++ b/drivers/mtd/nand/nand_base.c
-@@ -3853,6 +3853,7 @@ static void nand_decode_ext_id(struct mt
+@@ -3856,6 +3856,7 @@ static void nand_decode_ext_id(struct mt
  	/*
  	 * Field definitions are in the following datasheets:
  	 * Old style (4,5 byte ID): Samsung K9GAG08U0M (p.32)
@@ -21,7 +21,7 @@ Signed-off-by: Nikolay Martynov <mar.kolya at gmail.com>
  	 * New Samsung (6 byte ID): Samsung K9GAG08U0F (p.44)
  	 * Hynix MLC   (6 byte ID): Hynix H27UBG8T2B (p.22)
  	 *
-@@ -3950,6 +3951,19 @@ static void nand_decode_ext_id(struct mt
+@@ -3953,6 +3954,19 @@ static void nand_decode_ext_id(struct mt
  		*busw = (extid & 0x01) ? NAND_BUSWIDTH_16 : 0;
  
  		/*



More information about the lede-commits mailing list