From: Hauke Mehrtens Date: Thu, 25 Feb 2016 21:54:39 +0000 (+0000) Subject: kernel: update kernel 4.4 to version 4.4.3 X-Git-Tag: reboot~366 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=cb04b8d58201f6aa35f99b76ee8b3435beb7a01e;p=openwrt%2Fstaging%2Fjogo.git kernel: update kernel 4.4 to version 4.4.3 Signed-off-by: Hauke Mehrtens SVN-Revision: 48783 --- diff --git a/include/kernel-version.mk b/include/kernel-version.mk index af1af70cd9..3f4c71df9a 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -5,12 +5,12 @@ LINUX_RELEASE?=1 LINUX_VERSION-3.18 = .26 LINUX_VERSION-4.1 = .16 LINUX_VERSION-4.3 = .4 -LINUX_VERSION-4.4 = +LINUX_VERSION-4.4 = .3 LINUX_KERNEL_MD5SUM-3.18.26 = fb3ef8da32a25607807887b9567a6927 LINUX_KERNEL_MD5SUM-4.1.16 = e4bf22fed49b476b47acffc00c03267a LINUX_KERNEL_MD5SUM-4.3.4 = 5275d02132107c28b85f986bad576d91 -LINUX_KERNEL_MD5SUM-4.4 = 9a78fa2eb6c68ca5a40ed5af08142599 +LINUX_KERNEL_MD5SUM-4.4.3 = 5feab5a2c016e186e3088d4fae963ed7 ifdef KERNEL_PATCHVER LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER))) diff --git a/target/linux/ar71xx/patches-4.4/525-MIPS-ath79-enable-qca-usb-quirks.patch b/target/linux/ar71xx/patches-4.4/525-MIPS-ath79-enable-qca-usb-quirks.patch index 61b6b4ee16..0e33674adf 100644 --- a/target/linux/ar71xx/patches-4.4/525-MIPS-ath79-enable-qca-usb-quirks.patch +++ b/target/linux/ar71xx/patches-4.4/525-MIPS-ath79-enable-qca-usb-quirks.patch @@ -29,9 +29,7 @@ - u32 bootstrap; + void __iomem *phy_reg; + u32 t; - -- bootstrap = ath79_reset_rr(AR934X_RESET_REG_BOOTSTRAP); -- if (bootstrap & AR934X_BOOTSTRAP_USB_MODE_DEVICE) ++ + phy_reg = ioremap(base, 4); + if (!phy_reg) + return; @@ -43,7 +41,9 @@ + + iounmap(phy_reg); +} -+ + +- bootstrap = ath79_reset_rr(AR934X_RESET_REG_BOOTSTRAP); +- if (bootstrap & AR934X_BOOTSTRAP_USB_MODE_DEVICE) +static void ar934x_usb_reset_notifier(struct platform_device *pdev) +{ + if (pdev->id != -1) diff --git a/target/linux/ar71xx/patches-4.4/609-MIPS-ath79-ap136-fixes.patch b/target/linux/ar71xx/patches-4.4/609-MIPS-ath79-ap136-fixes.patch index 5d9d802eda..4d7902e166 100644 --- a/target/linux/ar71xx/patches-4.4/609-MIPS-ath79-ap136-fixes.patch +++ b/target/linux/ar71xx/patches-4.4/609-MIPS-ath79-ap136-fixes.patch @@ -135,8 +135,7 @@ +static void __init ap136_common_setup(void) +{ + u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); - --static int ap136_pci_plat_dev_init(struct pci_dev *dev) ++ + ath79_register_m25p80(NULL); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(ap136_leds_gpio), @@ -151,7 +150,8 @@ + ath79_register_wmac(art + AP136_WMAC_CALDATA_OFFSET, NULL); + + ath79_setup_qca955x_eth_cfg(QCA955X_ETH_CFG_RGMII_EN); -+ + +-static int ap136_pci_plat_dev_init(struct pci_dev *dev) + ath79_register_mdio(0, 0x0); + ath79_init_mac(ath79_eth0_data.mac_addr, art + AP136_MAC0_OFFSET, 0); + @@ -211,16 +211,16 @@ + /* GMAC0 of the AR8327 switch is connected to GMAC1 via SGMII */ + ap136_ar8327_pad0_cfg.mode = AR8327_PAD_MAC_SGMII; + ap136_ar8327_pad0_cfg.sgmii_delay_en = true; - -- ath79_pci_set_plat_dev_init(ap136_pci_plat_dev_init); -- ath79_register_pci(); ++ + /* GMAC6 of the AR8327 switch is connected to GMAC0 via RGMII */ + ap136_ar8327_pad6_cfg.mode = AR8327_PAD_MAC_RGMII; + ap136_ar8327_pad6_cfg.txclk_delay_en = true; + ap136_ar8327_pad6_cfg.rxclk_delay_en = true; + ap136_ar8327_pad6_cfg.txclk_delay_sel = AR8327_CLK_DELAY_SEL1; + ap136_ar8327_pad6_cfg.rxclk_delay_sel = AR8327_CLK_DELAY_SEL2; -+ + +- ath79_pci_set_plat_dev_init(ap136_pci_plat_dev_init); +- ath79_register_pci(); + ath79_eth0_pll_data.pll_1000 = 0x56000000; + ath79_eth1_pll_data.pll_1000 = 0x03000101; + diff --git a/target/linux/ar71xx/patches-4.4/739-MIPS-ath79-add-gpio-func-register-for-QCA955x-SoC.patch b/target/linux/ar71xx/patches-4.4/739-MIPS-ath79-add-gpio-func-register-for-QCA955x-SoC.patch index 237b03075b..a54c12b1a0 100644 --- a/target/linux/ar71xx/patches-4.4/739-MIPS-ath79-add-gpio-func-register-for-QCA955x-SoC.patch +++ b/target/linux/ar71xx/patches-4.4/739-MIPS-ath79-add-gpio-func-register-for-QCA955x-SoC.patch @@ -9,9 +9,6 @@ u32 t, s; - BUG_ON(!soc_is_ar934x() && !soc_is_qca953x() && !soc_is_qca956x()); -- -- if (gpio >= AR934X_GPIO_COUNT) -- return; + if (soc_is_ar934x()) + reg_base = AR934X_GPIO_REG_OUT_FUNC0; + else if (soc_is_qca953x()) @@ -23,6 +20,9 @@ + else + BUG(); +- if (gpio >= AR934X_GPIO_COUNT) +- return; +- - reg = AR934X_GPIO_REG_OUT_FUNC0 + 4 * (gpio / 4); + reg = reg_base + 4 * (gpio / 4); s = 8 * (gpio % 4); diff --git a/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch b/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch index 82957f23b9..3a61570011 100644 --- a/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch +++ b/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch @@ -214,7 +214,7 @@ #include #include #include -@@ -776,10 +777,10 @@ static void tcp_v6_send_response(const s +@@ -778,10 +779,10 @@ static void tcp_v6_send_response(const s topt = (__be32 *)(t1 + 1); if (tsecr) { @@ -632,14 +632,19 @@ #include --- a/include/net/inet_ecn.h +++ b/include/net/inet_ecn.h -@@ -115,13 +115,13 @@ static inline int IP6_ECN_set_ce(struct - { +@@ -124,9 +124,9 @@ static inline int IP6_ECN_set_ce(struct if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph))) return 0; -- *(__be32*)iph |= htonl(INET_ECN_CE << 20); -+ net_hdr_word(iph) |= htonl(INET_ECN_CE << 20); + +- from = *(__be32 *)iph; ++ from = net_hdr_word(iph); + to = from | htonl(INET_ECN_CE << 20); +- *(__be32 *)iph = to; ++ net_hdr_word(iph) = to; + if (skb->ip_summed == CHECKSUM_COMPLETE) + skb->csum = csum_add(csum_sub(skb->csum, from), to); return 1; - } +@@ -134,7 +134,7 @@ static inline int IP6_ECN_set_ce(struct static inline void IP6_ECN_clear(struct ipv6hdr *iph) { diff --git a/target/linux/bcm53xx/patches-4.4/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch b/target/linux/bcm53xx/patches-4.4/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch index 43c1978f49..6e8681c5c0 100644 --- a/target/linux/bcm53xx/patches-4.4/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch +++ b/target/linux/bcm53xx/patches-4.4/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch @@ -21,7 +21,7 @@ Signed-off-by: Rafał Miłecki #include "b53_regs.h" #include "b53_priv.h" -@@ -1313,6 +1314,20 @@ static int b53_switch_init(struct b53_de +@@ -1370,6 +1371,20 @@ static int b53_switch_init(struct b53_de sw_dev->cpu_port = 5; } diff --git a/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch b/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch index 909cffe8ad..736aac1c60 100644 --- a/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch +++ b/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch @@ -659,7 +659,7 @@ dwc_otg: Remove duplicate gadget probe/unregister function } --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -4946,7 +4946,7 @@ static void port_event(struct usb_hub *h +@@ -4967,7 +4967,7 @@ static void port_event(struct usb_hub *h if (portchange & USB_PORT_STAT_C_OVERCURRENT) { u16 status = 0, unused; diff --git a/target/linux/brcm47xx/patches-4.4/800-bcma-add-table-of-serial-flashes-with-smaller-blocks.patch b/target/linux/brcm47xx/patches-4.4/800-bcma-add-table-of-serial-flashes-with-smaller-blocks.patch index 99d909bc03..318dc55810 100644 --- a/target/linux/brcm47xx/patches-4.4/800-bcma-add-table-of-serial-flashes-with-smaller-blocks.patch +++ b/target/linux/brcm47xx/patches-4.4/800-bcma-add-table-of-serial-flashes-with-smaller-blocks.patch @@ -21,7 +21,7 @@ Signed-off-by: Rafał Miłecki static struct resource bcma_sflash_resource = { .name = "bcma_sflash", -@@ -41,6 +42,13 @@ static const struct bcma_sflash_tbl_e bc +@@ -42,6 +43,13 @@ static const struct bcma_sflash_tbl_e bc { NULL }, }; @@ -35,7 +35,7 @@ Signed-off-by: Rafał Miłecki static const struct bcma_sflash_tbl_e bcma_sflash_sst_tbl[] = { { "SST25WF512", 1, 0x1000, 16, }, { "SST25VF512", 0x48, 0x1000, 16, }, -@@ -84,6 +92,24 @@ static void bcma_sflash_cmd(struct bcma_ +@@ -85,6 +93,24 @@ static void bcma_sflash_cmd(struct bcma_ bcma_err(cc->core->bus, "SFLASH control command failed (timeout)!\n"); } @@ -60,7 +60,7 @@ Signed-off-by: Rafał Miłecki /* Initialize serial flash access */ int bcma_sflash_init(struct bcma_drv_cc *cc) { -@@ -114,6 +140,10 @@ int bcma_sflash_init(struct bcma_drv_cc +@@ -115,6 +141,10 @@ int bcma_sflash_init(struct bcma_drv_cc case 0x13: return -ENOTSUPP; default: diff --git a/target/linux/brcm47xx/patches-4.4/901-Revert-bcma-switch-GPIO-portions-to-use-GPIOLIB_IRQC.patch b/target/linux/brcm47xx/patches-4.4/901-Revert-bcma-switch-GPIO-portions-to-use-GPIOLIB_IRQC.patch index 585d56aedf..e686ba8528 100644 --- a/target/linux/brcm47xx/patches-4.4/901-Revert-bcma-switch-GPIO-portions-to-use-GPIOLIB_IRQC.patch +++ b/target/linux/brcm47xx/patches-4.4/901-Revert-bcma-switch-GPIO-portions-to-use-GPIOLIB_IRQC.patch @@ -195,7 +195,7 @@ Signed-off-by: Rafał Miłecki #if IS_BUILTIN(CONFIG_OF) if (cc->core->bus->hosttype == BCMA_HOSTTYPE_SOC) chip->of_node = cc->core->dev.of_node; -@@ -216,13 +248,13 @@ int bcma_gpio_init(struct bcma_drv_cc *c +@@ -217,13 +249,13 @@ int bcma_gpio_init(struct bcma_drv_cc *c else chip->base = -1; @@ -212,7 +212,7 @@ Signed-off-by: Rafał Miłecki return err; } -@@ -231,7 +263,7 @@ int bcma_gpio_init(struct bcma_drv_cc *c +@@ -232,7 +264,7 @@ int bcma_gpio_init(struct bcma_drv_cc *c int bcma_gpio_unregister(struct bcma_drv_cc *cc) { @@ -223,7 +223,7 @@ Signed-off-by: Rafał Miłecki } --- a/include/linux/bcma/bcma_driver_chipcommon.h +++ b/include/linux/bcma/bcma_driver_chipcommon.h -@@ -640,6 +640,7 @@ struct bcma_drv_cc { +@@ -646,6 +646,7 @@ struct bcma_drv_cc { spinlock_t gpio_lock; #ifdef CONFIG_BCMA_DRIVER_GPIO struct gpio_chip gpio; diff --git a/target/linux/brcm47xx/patches-4.4/999-wl_exports.patch b/target/linux/brcm47xx/patches-4.4/999-wl_exports.patch index ea59f4f1db..9094ec862a 100644 --- a/target/linux/brcm47xx/patches-4.4/999-wl_exports.patch +++ b/target/linux/brcm47xx/patches-4.4/999-wl_exports.patch @@ -12,7 +12,7 @@ static int cfe_env; --- a/arch/mips/mm/cache.c +++ b/arch/mips/mm/cache.c -@@ -59,6 +59,7 @@ void (*_dma_cache_wback)(unsigned long s +@@ -60,6 +60,7 @@ void (*_dma_cache_wback)(unsigned long s void (*_dma_cache_inv)(unsigned long start, unsigned long size); EXPORT_SYMBOL(_dma_cache_wback_inv); diff --git a/target/linux/brcm63xx/patches-4.4/574-board_HG622.patch b/target/linux/brcm63xx/patches-4.4/574-board_HG622.patch index 53818dc458..1f2e3d2f79 100644 --- a/target/linux/brcm63xx/patches-4.4/574-board_HG622.patch +++ b/target/linux/brcm63xx/patches-4.4/574-board_HG622.patch @@ -1,6 +1,6 @@ --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c -@@ -2057,6 +2057,53 @@ static struct board_info __initdata boar +@@ -2058,6 +2058,53 @@ static struct board_info __initdata boar }, }; @@ -54,7 +54,7 @@ static struct sprom_fixup __initdata vr3025u_fixups[] = { { .offset = 97, .value = 0xfeb3 }, { .offset = 98, .value = 0x1618 }, -@@ -2563,6 +2610,7 @@ static const struct board_info __initcon +@@ -2564,6 +2611,7 @@ static const struct board_info __initcon &board_96368mvwg, &board_96368mvngr, &board_DGND3700v1_3800B, @@ -62,7 +62,7 @@ &board_HG655b, &board_P870HW51A_V2, &board_VR3025u, -@@ -2671,6 +2719,7 @@ static struct of_device_id const bcm963x +@@ -2672,6 +2720,7 @@ static struct of_device_id const bcm963x { .compatible = "comtrend,vr-3025un", .data = &board_VR3025un, }, { .compatible = "comtrend,vr-3026e", .data = &board_VR3026e, }, { .compatible = "comtrend,wap-5813n", .data = &board_WAP5813n, }, diff --git a/target/linux/brcm63xx/patches-4.4/800-wl_exports.patch b/target/linux/brcm63xx/patches-4.4/800-wl_exports.patch index 68d37c7506..7f8720abb0 100644 --- a/target/linux/brcm63xx/patches-4.4/800-wl_exports.patch +++ b/target/linux/brcm63xx/patches-4.4/800-wl_exports.patch @@ -15,7 +15,7 @@ unsigned int check_len; --- a/arch/mips/mm/cache.c +++ b/arch/mips/mm/cache.c -@@ -59,6 +59,7 @@ void (*_dma_cache_wback)(unsigned long s +@@ -60,6 +60,7 @@ void (*_dma_cache_wback)(unsigned long s void (*_dma_cache_inv)(unsigned long start, unsigned long size); EXPORT_SYMBOL(_dma_cache_wback_inv); diff --git a/target/linux/generic/patches-4.4/010-KEYS-Fix-keyring-ref-leak-in-join_session_keyring.patch b/target/linux/generic/patches-4.4/010-KEYS-Fix-keyring-ref-leak-in-join_session_keyring.patch deleted file mode 100644 index f22d8c389c..0000000000 --- a/target/linux/generic/patches-4.4/010-KEYS-Fix-keyring-ref-leak-in-join_session_keyring.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 7ca88764d45c209791e8813131c1457c2e9e51e7 Mon Sep 17 00:00:00 2001 -From: Yevgeny Pats -Date: Mon, 11 Jan 2016 12:05:28 +0000 -Subject: KEYS: Fix keyring ref leak in join_session_keyring() - -If a thread is asked to join as a session keyring the keyring that's already -set as its session, we leak a keyring reference. - -This can be tested with the following program: - - #include - #include - #include - #include - - int main(int argc, const char *argv[]) - { - int i = 0; - key_serial_t serial; - - serial = keyctl(KEYCTL_JOIN_SESSION_KEYRING, - "leaked-keyring"); - if (serial < 0) { - perror("keyctl"); - return -1; - } - - if (keyctl(KEYCTL_SETPERM, serial, - KEY_POS_ALL | KEY_USR_ALL) < 0) { - perror("keyctl"); - return -1; - } - - for (i = 0; i < 100; i++) { - serial = keyctl(KEYCTL_JOIN_SESSION_KEYRING, - "leaked-keyring"); - if (serial < 0) { - perror("keyctl"); - return -1; - } - } - - return 0; - } - -If, after the program has run, there something like the following line in -/proc/keys: - -3f3d898f I--Q--- 100 perm 3f3f0000 0 0 keyring leaked-keyring: empty - -with a usage count of 100 * the number of times the program has been run, -then the kernel is malfunctioning. If leaked-keyring has zero usages or -has been garbage collected, then the problem is fixed. - -Reported-by: Yevgeny Pats -Signed-off-by: David Howells ---- - security/keys/process_keys.c | 1 + - 1 file changed, 1 insertion(+) - ---- a/security/keys/process_keys.c -+++ b/security/keys/process_keys.c -@@ -794,6 +794,7 @@ long join_session_keyring(const char *na - ret = PTR_ERR(keyring); - goto error2; - } else if (keyring == new->session_keyring) { -+ key_put(keyring); - ret = 0; - goto error2; - } diff --git a/target/linux/generic/patches-4.4/100-dump_stack-avoid-potential-deadlocks.patch b/target/linux/generic/patches-4.4/100-dump_stack-avoid-potential-deadlocks.patch deleted file mode 100644 index a20de7aa30..0000000000 --- a/target/linux/generic/patches-4.4/100-dump_stack-avoid-potential-deadlocks.patch +++ /dev/null @@ -1,118 +0,0 @@ -From: Eric Dumazet -Date: Fri, 22 Jan 2016 23:06:44 -0800 -Subject: [PATCH] dump_stack: avoid potential deadlocks - -Some servers experienced fatal deadlocks because of a combination -of bugs, leading to multiple cpus calling dump_stack(). - -The checksumming bug was fixed in commit 34ae6a1aa054 -("ipv6: update skb->csum when CE mark is propagated"). - -The second problem is a faulty locking in dump_stack() - -CPU1 runs in process context and calls dump_stack(), grabs dump_lock. - - CPU2 receives a TCP packet under softirq, grabs socket spinlock, and - call dump_stack() from netdev_rx_csum_fault(). - - dump_stack() spins on atomic_cmpxchg(&dump_lock, -1, 2), since - dump_lock is owned by CPU1 - -While dumping its stack, CPU1 is interrupted by a softirq, and happens -to process a packet for the TCP socket locked by CPU2. - -CPU1 spins forever in spin_lock() : deadlock - -Stack trace on CPU1 looked like : - -[306295.402231] NMI backtrace for cpu 1 -[306295.402238] RIP: 0010:[] [] _raw_spin_lock+0x25/0x30 -... -[306295.402255] Stack: -[306295.402256] ffff88407f023cb0 ffffffffa99cbdc3 ffff88407f023ca0 ffff88012f496bb0 -[306295.402266] ffffffffaa4dc1f0 ffff8820d94f0dc0 000000000000000a ffffffffaa4b4280 -[306295.402275] ffff88407f023ce0 ffffffffa98a21d0 ffff88407f023cc0 ffff88407f023ca0 -[306295.402284] Call Trace: -[306295.402286] -[306295.402288] -[306295.402291] [] tcp_v6_rcv+0x243/0x620 -[306295.402304] [] ip6_input_finish+0x11f/0x330 -[306295.402309] [] ip6_input+0x38/0x40 -[306295.402313] [] ip6_rcv_finish+0x3c/0x90 -[306295.402318] [] ipv6_rcv+0x2a9/0x500 -[306295.402323] [] process_backlog+0x461/0xaa0 -[306295.402332] [] net_rx_action+0x147/0x430 -[306295.402337] [] __do_softirq+0x167/0x2d0 -[306295.402341] [] call_softirq+0x1c/0x30 -[306295.402345] [] do_softirq+0x3f/0x80 -[306295.402350] [] irq_exit+0x6e/0xc0 -[306295.402355] [] smp_call_function_single_interrupt+0x35/0x40 -[306295.402360] [] call_function_single_interrupt+0x6a/0x70 -[306295.402361] -[306295.402364] -[306295.402376] [] printk+0x4d/0x4f -[306295.402390] [] printk_address+0x31/0x33 -[306295.402395] [] print_trace_address+0x33/0x3c -[306295.402408] [] print_context_stack+0x7f/0x119 -[306295.402412] [] dump_trace+0x26b/0x28e -[306295.402417] [] show_trace_log_lvl+0x4f/0x5c -[306295.402421] [] show_stack_log_lvl+0x104/0x113 -[306295.402425] [] show_stack+0x42/0x44 -[306295.402429] [] dump_stack+0x46/0x58 -[306295.402434] [] netdev_rx_csum_fault+0x38/0x3c -[306295.402439] [] __skb_checksum_complete_head+0x6e/0x80 -[306295.402444] [] __skb_checksum_complete+0x11/0x20 -[306295.402449] [] tcp_rcv_established+0x2bd5/0x2fd0 -[306295.402468] [] tcp_v6_do_rcv+0x13c/0x620 -[306295.402477] [] sk_backlog_rcv+0x15/0x30 -[306295.402482] [] release_sock+0xd2/0x150 -[306295.402486] [] tcp_recvmsg+0x1c1/0xfc0 -[306295.402491] [] inet_recvmsg+0x7d/0x90 -[306295.402495] [] sock_recvmsg+0xaf/0xe0 -[306295.402505] [] ___sys_recvmsg+0x111/0x3b0 -[306295.402528] [] SyS_recvmsg+0x5c/0xb0 -[306295.402532] [] system_call_fastpath+0x16/0x1b - -Fixes: b58d977432c8 ("dump_stack: serialize the output from dump_stack()") -Signed-off-by: Eric Dumazet -Cc: Alex Thorlton ---- - ---- a/lib/dump_stack.c -+++ b/lib/dump_stack.c -@@ -25,6 +25,7 @@ static atomic_t dump_lock = ATOMIC_INIT( - - asmlinkage __visible void dump_stack(void) - { -+ unsigned long flags; - int was_locked; - int old; - int cpu; -@@ -33,9 +34,8 @@ asmlinkage __visible void dump_stack(voi - * Permit this cpu to perform nested stack dumps while serialising - * against other CPUs - */ -- preempt_disable(); -- - retry: -+ local_irq_save(flags); - cpu = smp_processor_id(); - old = atomic_cmpxchg(&dump_lock, -1, cpu); - if (old == -1) { -@@ -43,6 +43,7 @@ retry: - } else if (old == cpu) { - was_locked = 1; - } else { -+ local_irq_restore(flags); - cpu_relax(); - goto retry; - } -@@ -52,7 +53,7 @@ retry: - if (!was_locked) - atomic_set(&dump_lock, -1); - -- preempt_enable(); -+ local_irq_restore(flags); - } - #else - asmlinkage __visible void dump_stack(void) diff --git a/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch index 921b8096a0..256bd514aa 100644 --- a/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch +++ b/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch @@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4199,6 +4199,9 @@ static enum gro_result dev_gro_receive(s +@@ -4204,6 +4204,9 @@ static enum gro_result dev_gro_receive(s enum gro_result ret; int grow; @@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau if (!(skb->dev->features & NETIF_F_GRO)) goto normal; -@@ -5349,6 +5352,48 @@ static void __netdev_adjacent_dev_unlink +@@ -5354,6 +5357,48 @@ static void __netdev_adjacent_dev_unlink &upper_dev->adj_list.lower); } @@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau static int __netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, bool master, void *private) -@@ -5420,6 +5465,7 @@ static int __netdev_upper_dev_link(struc +@@ -5425,6 +5470,7 @@ static int __netdev_upper_dev_link(struc goto rollback_lower_mesh; } @@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev, &changeupper_info.info); return 0; -@@ -5546,6 +5592,7 @@ void netdev_upper_dev_unlink(struct net_ +@@ -5551,6 +5597,7 @@ 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); @@ -92,7 +92,7 @@ Signed-off-by: Felix Fietkau call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev, &changeupper_info.info); } -@@ -6086,6 +6133,7 @@ int dev_set_mac_address(struct net_devic +@@ -6091,6 +6138,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/patches-4.4/721-phy_packets.patch b/target/linux/generic/patches-4.4/721-phy_packets.patch index 719275b540..c5993564a0 100644 --- a/target/linux/generic/patches-4.4/721-phy_packets.patch +++ b/target/linux/generic/patches-4.4/721-phy_packets.patch @@ -86,7 +86,7 @@ help --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -2708,10 +2708,20 @@ static int xmit_one(struct sk_buff *skb, +@@ -2713,10 +2713,20 @@ static int xmit_one(struct sk_buff *skb, if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all)) dev_queue_xmit_nit(skb, dev); diff --git a/target/linux/generic/patches-4.4/820-usb_add_usb_find_device_by_name.patch b/target/linux/generic/patches-4.4/820-usb_add_usb_find_device_by_name.patch index f6ef9ce1a7..1740d74179 100644 --- a/target/linux/generic/patches-4.4/820-usb_add_usb_find_device_by_name.patch +++ b/target/linux/generic/patches-4.4/820-usb_add_usb_find_device_by_name.patch @@ -74,7 +74,7 @@ * @dev: device the buffer will be used with --- a/include/linux/usb.h +++ b/include/linux/usb.h -@@ -725,6 +725,7 @@ static inline bool usb_device_no_sg_cons +@@ -729,6 +729,7 @@ static inline bool usb_device_no_sg_cons return udev && udev->bus && udev->bus->no_sg_constraint; } diff --git a/target/linux/lantiq/patches-4.4/0004-MIPS-lantiq-add-atm-hack.patch b/target/linux/lantiq/patches-4.4/0004-MIPS-lantiq-add-atm-hack.patch index 53809d0a8f..6b97f395ec 100644 --- a/target/linux/lantiq/patches-4.4/0004-MIPS-lantiq-add-atm-hack.patch +++ b/target/linux/lantiq/patches-4.4/0004-MIPS-lantiq-add-atm-hack.patch @@ -441,7 +441,7 @@ Signed-off-by: John Crispin { --- a/arch/mips/mm/cache.c +++ b/arch/mips/mm/cache.c -@@ -59,6 +59,8 @@ void (*_dma_cache_wback)(unsigned long s +@@ -60,6 +60,8 @@ void (*_dma_cache_wback)(unsigned long s void (*_dma_cache_inv)(unsigned long start, unsigned long size); EXPORT_SYMBOL(_dma_cache_wback_inv); diff --git a/target/linux/lantiq/patches-4.4/0032-USB-fix-roothub-for-IFXHCD.patch b/target/linux/lantiq/patches-4.4/0032-USB-fix-roothub-for-IFXHCD.patch index 1310e35372..5a7cdb0a9a 100644 --- a/target/linux/lantiq/patches-4.4/0032-USB-fix-roothub-for-IFXHCD.patch +++ b/target/linux/lantiq/patches-4.4/0032-USB-fix-roothub-for-IFXHCD.patch @@ -20,7 +20,7 @@ Subject: [PATCH 32/36] USB: fix roothub for IFXHCD choice --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -4337,7 +4337,7 @@ hub_port_init(struct usb_hub *hub, struc +@@ -4358,7 +4358,7 @@ hub_port_init(struct usb_hub *hub, struc udev->ttport = hdev->ttport; } else if (udev->speed != USB_SPEED_HIGH && hdev->speed == USB_SPEED_HIGH) { diff --git a/target/linux/lantiq/patches-4.4/0044-pinctrl-lantiq-introduce-new-dedicated-devicetree-bi.patch b/target/linux/lantiq/patches-4.4/0044-pinctrl-lantiq-introduce-new-dedicated-devicetree-bi.patch index b7905f99a5..b27cb0b40e 100644 --- a/target/linux/lantiq/patches-4.4/0044-pinctrl-lantiq-introduce-new-dedicated-devicetree-bi.patch +++ b/target/linux/lantiq/patches-4.4/0044-pinctrl-lantiq-introduce-new-dedicated-devicetree-bi.patch @@ -1266,7 +1266,7 @@ Signed-off-by: Linus Walleij /* --------- pinconf related code --------- */ static int xway_pinconf_get(struct pinctrl_dev *pctldev, unsigned pin, -@@ -714,10 +1601,7 @@ static struct gpio_chip xway_chip = { +@@ -715,10 +1602,7 @@ static struct gpio_chip xway_chip = { /* --------- register the pinctrl layer --------- */ @@ -1278,7 +1278,7 @@ Signed-off-by: Linus Walleij int pin_count; const struct ltq_mfp_pin *mfp; const struct ltq_pin_group *grps; -@@ -726,22 +1610,54 @@ static struct pinctrl_xway_soc { +@@ -727,22 +1611,54 @@ static struct pinctrl_xway_soc { unsigned int num_funcs; const unsigned *exin; unsigned int num_exin; @@ -1349,7 +1349,7 @@ Signed-off-by: Linus Walleij }; static struct pinctrl_gpio_range xway_gpio_range = { -@@ -750,9 +1666,14 @@ static struct pinctrl_gpio_range xway_gp +@@ -751,9 +1667,14 @@ static struct pinctrl_gpio_range xway_gp }; static const struct of_device_id xway_match[] = { @@ -1367,7 +1367,7 @@ Signed-off-by: Linus Walleij {}, }; MODULE_DEVICE_TABLE(of, xway_match); -@@ -774,7 +1695,7 @@ static int pinmux_xway_probe(struct plat +@@ -775,7 +1696,7 @@ static int pinmux_xway_probe(struct plat if (match) xway_soc = (const struct pinctrl_xway_soc *) match->data; else diff --git a/target/linux/mxs/patches-4.4/101-mxs-add-mxs_power.patch b/target/linux/mxs/patches-4.4/101-mxs-add-mxs_power.patch index 104736c7c0..ed25042f95 100644 --- a/target/linux/mxs/patches-4.4/101-mxs-add-mxs_power.patch +++ b/target/linux/mxs/patches-4.4/101-mxs-add-mxs_power.patch @@ -17,9 +17,9 @@ depends on MFD_WM831X --- a/drivers/power/Makefile +++ b/drivers/power/Makefile -@@ -10,6 +10,7 @@ obj-$(CONFIG_GENERIC_ADC_BATTERY) += gen - obj-$(CONFIG_PDA_POWER) += pda_power.o +@@ -11,6 +11,7 @@ obj-$(CONFIG_PDA_POWER) += pda_power.o obj-$(CONFIG_APM_POWER) += apm_power.o + obj-$(CONFIG_AXP20X_POWER) += axp20x_usb_power.o obj-$(CONFIG_MAX8925_POWER) += max8925_power.o +obj-$(CONFIG_MXS_POWER) += mxs_power.o obj-$(CONFIG_WM831X_BACKUP) += wm831x_backup.o diff --git a/target/linux/mxs/patches-4.4/102-mxs-add-regulator-driver.patch b/target/linux/mxs/patches-4.4/102-mxs-add-regulator-driver.patch index 4690b3c6d4..cb658c9aee 100644 --- a/target/linux/mxs/patches-4.4/102-mxs-add-regulator-driver.patch +++ b/target/linux/mxs/patches-4.4/102-mxs-add-regulator-driver.patch @@ -1,6 +1,6 @@ --- a/drivers/regulator/Kconfig +++ b/drivers/regulator/Kconfig -@@ -450,6 +450,14 @@ config REGULATOR_MT6397 +@@ -461,6 +461,14 @@ config REGULATOR_MT6397 This driver supports the control of different power rails of device through regulator interface. @@ -17,14 +17,14 @@ depends on MFD_PALMAS --- a/drivers/regulator/Makefile +++ b/drivers/regulator/Makefile -@@ -60,6 +60,7 @@ obj-$(CONFIG_REGULATOR_MC13783) += mc137 - obj-$(CONFIG_REGULATOR_MC13892) += mc13892-regulator.o +@@ -61,6 +61,7 @@ obj-$(CONFIG_REGULATOR_MC13892) += mc138 obj-$(CONFIG_REGULATOR_MC13XXX_CORE) += mc13xxx-regulator-core.o + obj-$(CONFIG_REGULATOR_MT6311) += mt6311-regulator.o obj-$(CONFIG_REGULATOR_MT6397) += mt6397-regulator.o +obj-$(CONFIG_REGULATOR_MXS) += mxs-regulator.o obj-$(CONFIG_REGULATOR_QCOM_RPM) += qcom_rpm-regulator.o - obj-$(CONFIG_REGULATOR_PALMAS) += palmas-regulator.o - obj-$(CONFIG_REGULATOR_PFUZE100) += pfuze100-regulator.o + obj-$(CONFIG_REGULATOR_QCOM_SMD_RPM) += qcom_smd-regulator.o + obj-$(CONFIG_REGULATOR_QCOM_SPMI) += qcom_spmi-regulator.o --- /dev/null +++ b/drivers/regulator/mxs-regulator.c @@ -0,0 +1,540 @@ diff --git a/target/linux/mxs/patches-4.4/103-dt-enable-regulator.patch b/target/linux/mxs/patches-4.4/103-dt-enable-regulator.patch index bfcf247f85..39ea0350f3 100644 --- a/target/linux/mxs/patches-4.4/103-dt-enable-regulator.patch +++ b/target/linux/mxs/patches-4.4/103-dt-enable-regulator.patch @@ -1,6 +1,6 @@ --- a/arch/arm/boot/dts/imx23.dtsi +++ b/arch/arm/boot/dts/imx23.dtsi -@@ -404,8 +404,46 @@ +@@ -439,8 +439,46 @@ }; power@80044000 { @@ -50,7 +50,7 @@ saif1: saif@80046000 { --- a/arch/arm/boot/dts/imx28.dtsi +++ b/arch/arm/boot/dts/imx28.dtsi -@@ -1035,8 +1035,46 @@ +@@ -1037,8 +1037,46 @@ }; power: power@80044000 { diff --git a/target/linux/mxs/patches-4.4/110-crypto-mxsdcp-provide-importexport.patch b/target/linux/mxs/patches-4.4/110-crypto-mxsdcp-provide-importexport.patch index 5aa3d7dc36..d23e7c8569 100644 --- a/target/linux/mxs/patches-4.4/110-crypto-mxsdcp-provide-importexport.patch +++ b/target/linux/mxs/patches-4.4/110-crypto-mxsdcp-provide-importexport.patch @@ -21,11 +21,9 @@ Changes since v2: drivers/crypto/mxs-dcp.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) -diff --git a/drivers/crypto/mxs-dcp.c b/drivers/crypto/mxs-dcp.c -index 59ed54e..1e2017f 100644 --- a/drivers/crypto/mxs-dcp.c +++ b/drivers/crypto/mxs-dcp.c -@@ -775,6 +775,24 @@ static void dcp_sha_cra_exit(struct crypto_tfm *tfm) +@@ -775,6 +775,24 @@ static void dcp_sha_cra_exit(struct cryp { } @@ -62,7 +60,7 @@ index 59ed54e..1e2017f 100644 .base = { .cra_name = "sha1", .cra_driver_name = "sha1-dcp", -@@ -858,8 +879,11 @@ static struct ahash_alg dcp_sha256_alg = { +@@ -858,8 +879,11 @@ static struct ahash_alg dcp_sha256_alg = .final = dcp_sha_final, .finup = dcp_sha_finup, .digest = dcp_sha_digest, @@ -74,7 +72,3 @@ index 59ed54e..1e2017f 100644 .base = { .cra_name = "sha256", .cra_driver_name = "sha256-dcp", --- -1.9.1 - --- diff --git a/target/linux/oxnas/patches-4.4/340-oxnas-pcie.patch b/target/linux/oxnas/patches-4.4/340-oxnas-pcie.patch index 374f9b96f3..edc23b70a1 100644 --- a/target/linux/oxnas/patches-4.4/340-oxnas-pcie.patch +++ b/target/linux/oxnas/patches-4.4/340-oxnas-pcie.patch @@ -1,6 +1,6 @@ --- a/drivers/pci/host/Kconfig +++ b/drivers/pci/host/Kconfig -@@ -172,4 +172,9 @@ config PCI_HISI +@@ -173,4 +173,9 @@ config PCI_HISI help Say Y here if you want PCIe controller support on HiSilicon HIP05 SoC diff --git a/target/linux/sunxi/patches-4.4/116-crypto-add-missing-statesize.patch b/target/linux/sunxi/patches-4.4/116-crypto-add-missing-statesize.patch deleted file mode 100644 index 261a19d8d3..0000000000 --- a/target/linux/sunxi/patches-4.4/116-crypto-add-missing-statesize.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 4f9ea86604e3ba64edd2817795798168fbb3c1a6 Mon Sep 17 00:00:00 2001 -From: LABBE Corentin -Date: Mon, 16 Nov 2015 09:35:54 +0100 -Subject: [PATCH] crypto: sun4i-ss - add missing statesize - -sun4i-ss implementaton of md5/sha1 is via ahash algorithms. -Commit 8996eafdcbad ("crypto: ahash - ensure statesize is non-zero") -made impossible to load them without giving statesize. This patch -specifiy statesize for sha1 and md5. - -Fixes: 6298e948215f ("crypto: sunxi-ss - Add Allwinner Security System crypto accelerator") -Cc: # v4.3+ -Tested-by: Chen-Yu Tsai -Signed-off-by: LABBE Corentin -Signed-off-by: Herbert Xu ---- - drivers/crypto/sunxi-ss/sun4i-ss-core.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/drivers/crypto/sunxi-ss/sun4i-ss-core.c -+++ b/drivers/crypto/sunxi-ss/sun4i-ss-core.c -@@ -39,6 +39,7 @@ static struct sun4i_ss_alg_template ss_a - .import = sun4i_hash_import_md5, - .halg = { - .digestsize = MD5_DIGEST_SIZE, -+ .statesize = sizeof(struct md5_state), - .base = { - .cra_name = "md5", - .cra_driver_name = "md5-sun4i-ss", -@@ -66,6 +67,7 @@ static struct sun4i_ss_alg_template ss_a - .import = sun4i_hash_import_sha1, - .halg = { - .digestsize = SHA1_DIGEST_SIZE, -+ .statesize = sizeof(struct sha1_state), - .base = { - .cra_name = "sha1", - .cra_driver_name = "sha1-sun4i-ss", diff --git a/target/linux/uml/patches-4.4/100-link-libpthread.patch b/target/linux/uml/patches-4.4/100-link-libpthread.patch index 297f6d528f..2ffab6bbfb 100644 --- a/target/linux/uml/patches-4.4/100-link-libpthread.patch +++ b/target/linux/uml/patches-4.4/100-link-libpthread.patch @@ -1,6 +1,6 @@ --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh -@@ -62,7 +62,7 @@ +@@ -62,7 +62,7 @@ vmlinux_link() -Wl,--start-group \ ${KBUILD_VMLINUX_MAIN} \ -Wl,--end-group \ diff --git a/target/linux/uml/patches-4.4/101-mconsole-exec.patch b/target/linux/uml/patches-4.4/101-mconsole-exec.patch index 98f04f4a62..879b106bfa 100644 --- a/target/linux/uml/patches-4.4/101-mconsole-exec.patch +++ b/target/linux/uml/patches-4.4/101-mconsole-exec.patch @@ -17,7 +17,7 @@ # --- a/arch/um/drivers/mconsole.h +++ b/arch/um/drivers/mconsole.h -@@ -85,6 +85,7 @@ +@@ -85,6 +85,7 @@ extern void mconsole_cad(struct mc_reque extern void mconsole_stop(struct mc_request *req); extern void mconsole_go(struct mc_request *req); extern void mconsole_log(struct mc_request *req); @@ -43,7 +43,7 @@ #include #include -@@ -121,6 +123,59 @@ +@@ -121,6 +123,59 @@ void mconsole_log(struct mc_request *req mconsole_reply(req, "", 0, 0); } @@ -103,7 +103,7 @@ void mconsole_proc(struct mc_request *req) { struct vfsmount *mnt = task_active_pid_ns(current)->proc_mnt; -@@ -187,6 +242,7 @@ +@@ -187,6 +242,7 @@ void mconsole_proc(struct mc_request *re stop - pause the UML; it will do nothing until it receives a 'go' \n\ go - continue the UML after a 'stop' \n\ log - make UML enter into the kernel log\n\ @@ -113,7 +113,7 @@ " --- a/arch/um/drivers/mconsole_user.c +++ b/arch/um/drivers/mconsole_user.c -@@ -30,6 +30,7 @@ +@@ -30,6 +30,7 @@ static struct mconsole_command commands[ { "stop", mconsole_stop, MCONSOLE_PROC }, { "go", mconsole_go, MCONSOLE_INTR }, { "log", mconsole_log, MCONSOLE_INTR }, @@ -123,7 +123,7 @@ }; --- a/arch/um/os-Linux/file.c +++ b/arch/um/os-Linux/file.c -@@ -535,6 +535,8 @@ +@@ -535,6 +535,8 @@ int os_create_unix_socket(const char *fi addr.sun_family = AF_UNIX; @@ -134,7 +134,7 @@ err = bind(sock, (struct sockaddr *) &addr, sizeof(addr)); --- a/include/linux/kmod.h +++ b/include/linux/kmod.h -@@ -62,6 +62,7 @@ +@@ -62,6 +62,7 @@ struct subprocess_info { int wait; int retval; int (*init)(struct subprocess_info *info, struct cred *new); @@ -142,7 +142,7 @@ void (*cleanup)(struct subprocess_info *info); void *data; }; -@@ -102,4 +103,6 @@ +@@ -102,4 +103,6 @@ extern int usermodehelper_read_trylock(v extern long usermodehelper_read_lock_wait(long timeout); extern void usermodehelper_read_unlock(void); @@ -159,7 +159,7 @@ #include #include -@@ -222,6 +223,28 @@ +@@ -222,6 +223,28 @@ static int call_usermodehelper_exec_asyn flush_signal_handlers(current, 1); spin_unlock_irq(¤t->sighand->siglock); @@ -188,7 +188,7 @@ /* * Our parent (unbound workqueue) runs with elevated scheduling * priority. Avoid propagating that into the userspace child. -@@ -540,6 +563,20 @@ +@@ -540,6 +563,20 @@ struct subprocess_info *call_usermodehel } EXPORT_SYMBOL(call_usermodehelper_setup); diff --git a/target/linux/uml/patches-4.4/102-pseudo-random-mac.patch b/target/linux/uml/patches-4.4/102-pseudo-random-mac.patch index 57598f9964..fc54f603c0 100644 --- a/target/linux/uml/patches-4.4/102-pseudo-random-mac.patch +++ b/target/linux/uml/patches-4.4/102-pseudo-random-mac.patch @@ -11,7 +11,7 @@ Applies to vanilla kernel 3.9.4. =============================================================================== --- a/arch/um/Kconfig.net +++ b/arch/um/Kconfig.net -@@ -21,6 +21,19 @@ +@@ -21,6 +21,19 @@ config UML_NET enable at least one of the following transport options to actually make use of UML networking. @@ -47,7 +47,7 @@ Applies to vanilla kernel 3.9.4. #define DRIVER_NAME "uml-netdev" static DEFINE_SPINLOCK(opened_lock); -@@ -295,11 +302,47 @@ +@@ -295,11 +302,47 @@ static void uml_net_user_timer_expire(un #endif } @@ -95,7 +95,7 @@ Applies to vanilla kernel 3.9.4. if (str == NULL) goto random; -@@ -340,9 +383,26 @@ +@@ -340,9 +383,26 @@ static void setup_etheraddr(struct net_d return; random: diff --git a/target/linux/zynq/patches-4.4/0001-arm-dts-zynq-zc702.dts-Set-default-rdinit-to-sbin-in.patch b/target/linux/zynq/patches-4.4/0001-arm-dts-zynq-zc702.dts-Set-default-rdinit-to-sbin-in.patch index af603a1fe7..ef47c5ffd0 100644 --- a/target/linux/zynq/patches-4.4/0001-arm-dts-zynq-zc702.dts-Set-default-rdinit-to-sbin-in.patch +++ b/target/linux/zynq/patches-4.4/0001-arm-dts-zynq-zc702.dts-Set-default-rdinit-to-sbin-in.patch @@ -5,19 +5,14 @@ Subject: [PATCH] arm: dts: zynq-zc702.dts: Set default rdinit to /sbin/init Signed-off-by: Jason Wu -diff --git a/arch/arm/boot/dts/zynq-zc702.dts b/arch/arm/boot/dts/zynq-zc702.dts -index 68bd8c1..adf9a1d 100644 --- a/arch/arm/boot/dts/zynq-zc702.dts +++ b/arch/arm/boot/dts/zynq-zc702.dts -@@ -31,7 +31,7 @@ - }; - - chosen { +@@ -30,7 +30,7 @@ + }; + + chosen { - bootargs = "earlyprintk"; + bootargs = "earlyprintk rdinit=/sbin/init"; - stdout-path = "serial0:115200n8"; - }; - --- -1.9.1 - + stdout-path = "serial0:115200n8"; + }; +