diff options
Diffstat (limited to 'target/linux')
38 files changed, 130 insertions, 309 deletions
diff --git a/target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch b/target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch index 185cb9cc71..f181f6cc11 100644 --- a/target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch +++ b/target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch @@ -1351,7 +1351,7 @@ config ATH79_MACH_UBNT_XM bool "Ubiquiti Networks XM/UniFi boards" -@@ -83,6 +1126,106 @@ config ATH79_MACH_UBNT_XM +@@ -83,6 +1135,106 @@ config ATH79_MACH_UBNT_XM Say 'Y' here if you want your kernel to support the Ubiquiti Networks XM (rev 1.0) board. @@ -1458,7 +1458,7 @@ endmenu config SOC_AR71XX -@@ -124,7 +1267,10 @@ config ATH79_DEV_DSA +@@ -124,7 +1276,10 @@ config ATH79_DEV_DSA config ATH79_DEV_ETH def_bool n @@ -1470,7 +1470,7 @@ def_bool n config ATH79_DEV_GPIO_BUTTONS -@@ -154,6 +1300,11 @@ config ATH79_PCI_ATH9K_FIXUP +@@ -154,6 +1309,11 @@ config ATH79_PCI_ATH9K_FIXUP def_bool n config ATH79_ROUTERBOOT diff --git a/target/linux/ar71xx/patches-3.18/707-MIPS-ath79-add-support-for-QCA953x-SoC.patch b/target/linux/ar71xx/patches-3.18/707-MIPS-ath79-add-support-for-QCA953x-SoC.patch index cf10af3e22..88d376cd55 100644 --- a/target/linux/ar71xx/patches-3.18/707-MIPS-ath79-add-support-for-QCA953x-SoC.patch +++ b/target/linux/ar71xx/patches-3.18/707-MIPS-ath79-add-support-for-QCA953x-SoC.patch @@ -22,7 +22,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed. --- a/arch/mips/ath79/Kconfig +++ b/arch/mips/ath79/Kconfig -@@ -1248,6 +1248,10 @@ config SOC_AR934X +@@ -1257,6 +1257,10 @@ config SOC_AR934X select PCI_AR724X if PCI def_bool n @@ -33,7 +33,7 @@ meaning of the bits CPUCLK_FROM_CPUPLL and DDRCLK_FROM_DDRPLL is reversed. config SOC_QCA955X select HW_HAS_PCI select PCI_AR724X if PCI -@@ -1290,7 +1294,7 @@ config ATH79_DEV_USB +@@ -1299,7 +1303,7 @@ config ATH79_DEV_USB def_bool n config ATH79_DEV_WMAC diff --git a/target/linux/ar71xx/patches-3.18/735-MIPS-ath79-add-support-for-QCA956x-SoC.patch b/target/linux/ar71xx/patches-3.18/735-MIPS-ath79-add-support-for-QCA956x-SoC.patch index eecccdcd0d..6d836adb52 100644 --- a/target/linux/ar71xx/patches-3.18/735-MIPS-ath79-add-support-for-QCA956x-SoC.patch +++ b/target/linux/ar71xx/patches-3.18/735-MIPS-ath79-add-support-for-QCA956x-SoC.patch @@ -378,7 +378,7 @@ } --- a/arch/mips/ath79/Kconfig +++ b/arch/mips/ath79/Kconfig -@@ -1268,6 +1268,12 @@ config SOC_QCA955X +@@ -1277,6 +1277,12 @@ config SOC_QCA955X select PCI_AR724X if PCI def_bool n @@ -391,7 +391,7 @@ config ATH79_DEV_M25P80 select ATH79_DEV_SPI def_bool n -@@ -1305,7 +1311,7 @@ config ATH79_DEV_USB +@@ -1314,7 +1320,7 @@ config ATH79_DEV_USB def_bool n config ATH79_DEV_WMAC diff --git a/target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch b/target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch index 3a9ca14204..d077b60bc8 100644 --- a/target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch +++ b/target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch @@ -210,7 +210,7 @@ #include <linux/uaccess.h> #include <linux/ipv6.h> #include <linux/icmpv6.h> -@@ -833,10 +834,10 @@ static void tcp_v6_send_response(struct +@@ -837,10 +838,10 @@ static void tcp_v6_send_response(struct topt = (__be32 *)(t1 + 1); if (tsecr) { @@ -237,7 +237,7 @@ */ --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c -@@ -384,7 +384,7 @@ int ipv6_recv_error(struct sock *sk, str +@@ -386,7 +386,7 @@ int ipv6_recv_error(struct sock *sk, str ipv6_iface_scope_id(&sin->sin6_addr, IP6CB(skb)->iif); } else { @@ -246,7 +246,7 @@ &sin->sin6_addr); sin->sin6_scope_id = 0; } -@@ -718,12 +718,12 @@ int ip6_datagram_send_ctl(struct net *ne +@@ -720,12 +720,12 @@ int ip6_datagram_send_ctl(struct net *ne } if (fl6->flowlabel&IPV6_FLOWINFO_MASK) { @@ -342,7 +342,7 @@ #endif /* _LINUX_TYPES_H */ --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c -@@ -1326,8 +1326,8 @@ static struct sk_buff **inet_gro_receive +@@ -1329,8 +1329,8 @@ static struct sk_buff **inet_gro_receive if (unlikely(ip_fast_csum((u8 *)iph, 5))) goto out_unlock; @@ -637,14 +637,19 @@ #include <linux/netdevice.h> --- 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) { @@ -664,7 +669,7 @@ #define IP6_MF 0x0001 #define IP6_OFFSET 0xFFF8 -@@ -398,8 +398,8 @@ static inline void __ipv6_addr_set_half( +@@ -417,8 +417,8 @@ static inline void __ipv6_addr_set_half( } #endif #endif @@ -675,7 +680,7 @@ } static inline void ipv6_addr_set(struct in6_addr *addr, -@@ -458,6 +458,8 @@ static inline bool ipv6_prefix_equal(con +@@ -477,6 +477,8 @@ static inline bool ipv6_prefix_equal(con const __be32 *a1 = addr1->s6_addr32; const __be32 *a2 = addr2->s6_addr32; unsigned int pdw, pbi; @@ -684,7 +689,7 @@ /* check complete u32 in prefix */ pdw = prefixlen >> 5; -@@ -466,7 +468,9 @@ static inline bool ipv6_prefix_equal(con +@@ -485,7 +487,9 @@ static inline bool ipv6_prefix_equal(con /* check incomplete u32 in prefix */ pbi = prefixlen & 0x1f; @@ -695,7 +700,7 @@ return false; return true; -@@ -609,13 +613,13 @@ static inline void ipv6_addr_set_v4mappe +@@ -629,13 +633,13 @@ static inline void ipv6_addr_set_v4mappe */ static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen) { @@ -711,7 +716,7 @@ if (xb) return i * 32 + 31 - __fls(ntohl(xb)); } -@@ -739,17 +743,18 @@ static inline __be32 ip6_make_flowlabel( +@@ -759,17 +763,18 @@ static inline __be32 ip6_make_flowlabel( static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass, __be32 flowlabel) { diff --git a/target/linux/ar71xx/patches-3.18/903-MIPS-ath79-ubnt-rocket-m-xw-support.patch b/target/linux/ar71xx/patches-3.18/903-MIPS-ath79-ubnt-rocket-m-xw-support.patch index a1674a7a87..96a16c28bc 100644 --- a/target/linux/ar71xx/patches-3.18/903-MIPS-ath79-ubnt-rocket-m-xw-support.patch +++ b/target/linux/ar71xx/patches-3.18/903-MIPS-ath79-ubnt-rocket-m-xw-support.patch @@ -1,6 +1,6 @@ --- a/arch/mips/ath79/machtypes.h +++ b/arch/mips/ath79/machtypes.h -@@ -177,6 +177,7 @@ enum ath79_mach_type { +@@ -178,6 +178,7 @@ enum ath79_mach_type { ATH79_MACH_UBNT_NANO_M, /* Ubiquiti NanoStation M */ ATH79_MACH_UBNT_NANO_M_XW, /* Ubiquiti NanoStation M XW */ ATH79_MACH_UBNT_ROCKET_M, /* Ubiquiti Rocket M */ diff --git a/target/linux/bcm53xx/patches-3.18/132-ARM-BCM5301X-Add-missing-Netgear-R8000-LEDs.patch b/target/linux/bcm53xx/patches-3.18/132-ARM-BCM5301X-Add-missing-Netgear-R8000-LEDs.patch index c117774b0b..60fba1315a 100644 --- a/target/linux/bcm53xx/patches-3.18/132-ARM-BCM5301X-Add-missing-Netgear-R8000-LEDs.patch +++ b/target/linux/bcm53xx/patches-3.18/132-ARM-BCM5301X-Add-missing-Netgear-R8000-LEDs.patch @@ -11,8 +11,6 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> arch/arm/boot/dts/bcm4709-netgear-r8000.dts | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) -diff --git a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts -index 446c586..b52927c 100644 --- a/arch/arm/boot/dts/bcm4709-netgear-r8000.dts +++ b/arch/arm/boot/dts/bcm4709-netgear-r8000.dts @@ -50,6 +50,36 @@ @@ -52,6 +50,3 @@ index 446c586..b52927c 100644 }; gpio-keys { --- -1.8.4.5 - diff --git a/target/linux/bcm53xx/patches-3.18/186-USB-bcma-switch-to-GPIO-descriptor-for-power-control.patch b/target/linux/bcm53xx/patches-3.18/186-USB-bcma-switch-to-GPIO-descriptor-for-power-control.patch index 5031886f00..f1995d1e6d 100644 --- a/target/linux/bcm53xx/patches-3.18/186-USB-bcma-switch-to-GPIO-descriptor-for-power-control.patch +++ b/target/linux/bcm53xx/patches-3.18/186-USB-bcma-switch-to-GPIO-descriptor-for-power-control.patch @@ -17,8 +17,6 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> drivers/usb/host/bcma-hcd.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) -diff --git a/drivers/usb/host/bcma-hcd.c b/drivers/usb/host/bcma-hcd.c -index 5398e3d..291aaa2 100644 --- a/drivers/usb/host/bcma-hcd.c +++ b/drivers/usb/host/bcma-hcd.c @@ -21,6 +21,7 @@ @@ -37,7 +35,7 @@ index 5398e3d..291aaa2 100644 }; /* Wait for bitmask in a register to get set or cleared. -@@ -228,19 +230,12 @@ static void bcma_hcd_init_chip_arm(struct bcma_device *dev) +@@ -228,19 +230,12 @@ static void bcma_hcd_init_chip_arm(struc static void bcma_hci_platform_power_gpio(struct bcma_device *dev, bool val) { @@ -60,7 +58,7 @@ index 5398e3d..291aaa2 100644 } static const struct usb_ehci_pdata ehci_pdata = { -@@ -314,7 +309,11 @@ static int bcma_hcd_probe(struct bcma_device *dev) +@@ -314,7 +309,11 @@ static int bcma_hcd_probe(struct bcma_de if (!usb_dev) return -ENOMEM; diff --git a/target/linux/brcm2708/patches-3.18/0024-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch b/target/linux/brcm2708/patches-3.18/0024-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch index e720949304..e67b4714f5 100644 --- a/target/linux/brcm2708/patches-3.18/0024-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch +++ b/target/linux/brcm2708/patches-3.18/0024-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch @@ -54,7 +54,7 @@ Subject: [PATCH 024/114] config: Enable CONFIG_MEMCG, but leave it disabled printk("cgroup: using legacy files on the default hierarchy\n"); --- a/mm/memcontrol.c +++ b/mm/memcontrol.c -@@ -6207,6 +6207,7 @@ struct cgroup_subsys memory_cgrp_subsys +@@ -6208,6 +6208,7 @@ struct cgroup_subsys memory_cgrp_subsys .bind = mem_cgroup_bind, .legacy_cftypes = mem_cgroup_files, .early_init = 0, diff --git a/target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch b/target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch index 0c339d3a2f..82d36f84ef 100644 --- a/target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch +++ b/target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch @@ -10,7 +10,7 @@ Hub overcurrent messages are more serious than "debug". Increase loglevel. --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -4907,7 +4907,7 @@ static void port_event(struct usb_hub *h +@@ -4928,7 +4928,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-3.18/400-mtd-bcm47xxpart-get-nvram.patch b/target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch index de109e35f4..4fb8a87d4c 100644 --- a/target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch +++ b/target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch @@ -1,6 +1,6 @@ --- a/drivers/mtd/bcm47xxpart.c +++ b/drivers/mtd/bcm47xxpart.c -@@ -100,6 +100,7 @@ static int bcm47xxpart_parse(struct mtd_ +@@ -127,6 +127,7 @@ static int bcm47xxpart_parse(struct mtd_ int last_trx_part = -1; int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, }; int err; @@ -8,7 +8,7 @@ /* * Some really old flashes (like AT45DB*) had smaller erasesize-s, but -@@ -306,12 +307,23 @@ static int bcm47xxpart_parse(struct mtd_ +@@ -334,12 +335,23 @@ static int bcm47xxpart_parse(struct mtd_ if (buf[0] == NVRAM_HEADER) { bcm47xxpart_add_part(&parts[curr_part++], "nvram", master->size - blocksize, 0); diff --git a/target/linux/brcm47xx/patches-3.18/800-bcma-add-table-of-serial-flashes-with-smaller-blocks.patch b/target/linux/brcm47xx/patches-3.18/800-bcma-add-table-of-serial-flashes-with-smaller-blocks.patch index 99d909bc03..318dc55810 100644 --- a/target/linux/brcm47xx/patches-3.18/800-bcma-add-table-of-serial-flashes-with-smaller-blocks.patch +++ b/target/linux/brcm47xx/patches-3.18/800-bcma-add-table-of-serial-flashes-with-smaller-blocks.patch @@ -21,7 +21,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> 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 <zajec5@gmail.com> 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 <zajec5@gmail.com> /* 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/generic/patches-3.18/010-KEYS-Fix-keyring-ref-leak-in-join_session_keyring.patch b/target/linux/generic/patches-3.18/010-KEYS-Fix-keyring-ref-leak-in-join_session_keyring.patch deleted file mode 100644 index 9c6a969738..0000000000 --- a/target/linux/generic/patches-3.18/010-KEYS-Fix-keyring-ref-leak-in-join_session_keyring.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 7ca88764d45c209791e8813131c1457c2e9e51e7 Mon Sep 17 00:00:00 2001 -From: Yevgeny Pats <yevgeny@perception-point.io> -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 <stddef.h> - #include <stdio.h> - #include <sys/types.h> - #include <keyutils.h> - - 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 <yevgeny@perception-point.io> -Signed-off-by: David Howells <dhowells@redhat.com> ---- - security/keys/process_keys.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/security/keys/process_keys.c b/security/keys/process_keys.c -index a3f85d2..e6d50172 100644 ---- a/security/keys/process_keys.c -+++ b/security/keys/process_keys.c -@@ -794,6 +794,7 @@ long join_session_keyring(const char *name) - ret = PTR_ERR(keyring); - goto error2; - } else if (keyring == new->session_keyring) { -+ key_put(keyring); - ret = 0; - goto error2; - } --- -2.7.0.rc3 - diff --git a/target/linux/generic/patches-3.18/081-01-pppoe-Use-workqueue-to-die-properly-when-a-PADT-is-r.patch b/target/linux/generic/patches-3.18/081-01-pppoe-Use-workqueue-to-die-properly-when-a-PADT-is-r.patch index de8583058f..347049a924 100644 --- a/target/linux/generic/patches-3.18/081-01-pppoe-Use-workqueue-to-die-properly-when-a-PADT-is-r.patch +++ b/target/linux/generic/patches-3.18/081-01-pppoe-Use-workqueue-to-die-properly-when-a-PADT-is-r.patch @@ -31,7 +31,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> --- a/drivers/net/ppp/pppoe.c +++ b/drivers/net/ppp/pppoe.c -@@ -455,6 +455,18 @@ out: +@@ -454,6 +454,18 @@ out: return NET_RX_DROP; } @@ -50,7 +50,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> /************************************************************************ * * Receive a PPPoE Discovery frame. -@@ -500,7 +512,8 @@ static int pppoe_disc_rcv(struct sk_buff +@@ -499,7 +511,8 @@ static int pppoe_disc_rcv(struct sk_buff } bh_unlock_sock(sk); @@ -60,7 +60,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> } abort: -@@ -613,6 +626,8 @@ static int pppoe_connect(struct socket * +@@ -612,6 +625,8 @@ static int pppoe_connect(struct socket * lock_sock(sk); diff --git a/target/linux/generic/patches-3.18/081-02-pppoe-Lacks-DST-MAC-address-check.patch b/target/linux/generic/patches-3.18/081-02-pppoe-Lacks-DST-MAC-address-check.patch index 3ce778e301..f592929b3e 100644 --- a/target/linux/generic/patches-3.18/081-02-pppoe-Lacks-DST-MAC-address-check.patch +++ b/target/linux/generic/patches-3.18/081-02-pppoe-Lacks-DST-MAC-address-check.patch @@ -13,7 +13,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> --- a/drivers/net/ppp/pppoe.c +++ b/drivers/net/ppp/pppoe.c -@@ -380,6 +380,9 @@ static int pppoe_rcv_core(struct sock *s +@@ -379,6 +379,9 @@ static int pppoe_rcv_core(struct sock *s * can't change. */ diff --git a/target/linux/generic/patches-3.18/081-03-pppoe-drop-pppoe-device-in-pppoe_unbind_sock_work.patch b/target/linux/generic/patches-3.18/081-03-pppoe-drop-pppoe-device-in-pppoe_unbind_sock_work.patch index f672c67b90..fc26b8ffaf 100644 --- a/target/linux/generic/patches-3.18/081-03-pppoe-drop-pppoe-device-in-pppoe_unbind_sock_work.patch +++ b/target/linux/generic/patches-3.18/081-03-pppoe-drop-pppoe-device-in-pppoe_unbind_sock_work.patch @@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> --- a/drivers/net/ppp/pppoe.c +++ b/drivers/net/ppp/pppoe.c -@@ -465,6 +465,10 @@ static void pppoe_unbind_sock_work(struc +@@ -464,6 +464,10 @@ static void pppoe_unbind_sock_work(struc struct sock *sk = sk_pppox(po); lock_sock(sk); diff --git a/target/linux/generic/patches-3.18/081-04-ppp-don-t-override-sk-sk_state-in-pppoe_flush_dev.patch b/target/linux/generic/patches-3.18/081-04-ppp-don-t-override-sk-sk_state-in-pppoe_flush_dev.patch deleted file mode 100644 index 73f2e3d47a..0000000000 --- a/target/linux/generic/patches-3.18/081-04-ppp-don-t-override-sk-sk_state-in-pppoe_flush_dev.patch +++ /dev/null @@ -1,68 +0,0 @@ -From: Guillaume Nault <g.nault@alphalink.fr> -Date: Wed, 30 Sep 2015 11:45:33 +0200 -Subject: [PATCH] ppp: don't override sk->sk_state in pppoe_flush_dev() - -Since commit 2b018d57ff18 ("pppoe: drop PPPOX_ZOMBIEs in pppoe_release"), -pppoe_release() calls dev_put(po->pppoe_dev) if sk is in the -PPPOX_ZOMBIE state. But pppoe_flush_dev() can set sk->sk_state to -PPPOX_ZOMBIE _and_ reset po->pppoe_dev to NULL. This leads to the -following oops: - -[ 570.140800] BUG: unable to handle kernel NULL pointer dereference at 00000000000004e0 -[ 570.142931] IP: [<ffffffffa018c701>] pppoe_release+0x50/0x101 [pppoe] -[ 570.144601] PGD 3d119067 PUD 3dbc1067 PMD 0 -[ 570.144601] Oops: 0000 [#1] SMP -[ 570.144601] Modules linked in: l2tp_ppp l2tp_netlink l2tp_core ip6_udp_tunnel udp_tunnel pppoe pppox ppp_generic slhc loop crc32c_intel ghash_clmulni_intel jitterentropy_rng sha256_generic hmac drbg ansi_cprng aesni_intel aes_x86_64 ablk_helper cryptd lrw gf128mul glue_helper acpi_cpufreq evdev serio_raw processor button ext4 crc16 mbcache jbd2 virtio_net virtio_blk virtio_pci virtio_ring virtio -[ 570.144601] CPU: 1 PID: 15738 Comm: ppp-apitest Not tainted 4.2.0 #1 -[ 570.144601] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Debian-1.8.2-1 04/01/2014 -[ 570.144601] task: ffff88003d30d600 ti: ffff880036b60000 task.ti: ffff880036b60000 -[ 570.144601] RIP: 0010:[<ffffffffa018c701>] [<ffffffffa018c701>] pppoe_release+0x50/0x101 [pppoe] -[ 570.144601] RSP: 0018:ffff880036b63e08 EFLAGS: 00010202 -[ 570.144601] RAX: 0000000000000000 RBX: ffff880034340000 RCX: 0000000000000206 -[ 570.144601] RDX: 0000000000000006 RSI: ffff88003d30dd20 RDI: ffff88003d30dd20 -[ 570.144601] RBP: ffff880036b63e28 R08: 0000000000000001 R09: 0000000000000000 -[ 570.144601] R10: 00007ffee9b50420 R11: ffff880034340078 R12: ffff8800387ec780 -[ 570.144601] R13: ffff8800387ec7b0 R14: ffff88003e222aa0 R15: ffff8800387ec7b0 -[ 570.144601] FS: 00007f5672f48700(0000) GS:ffff88003fc80000(0000) knlGS:0000000000000000 -[ 570.144601] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 -[ 570.144601] CR2: 00000000000004e0 CR3: 0000000037f7e000 CR4: 00000000000406a0 -[ 570.144601] Stack: -[ 570.144601] ffffffffa018f240 ffff8800387ec780 ffffffffa018f240 ffff8800387ec7b0 -[ 570.144601] ffff880036b63e48 ffffffff812caabe ffff880039e4e000 0000000000000008 -[ 570.144601] ffff880036b63e58 ffffffff812cabad ffff880036b63ea8 ffffffff811347f5 -[ 570.144601] Call Trace: -[ 570.144601] [<ffffffff812caabe>] sock_release+0x1a/0x75 -[ 570.144601] [<ffffffff812cabad>] sock_close+0xd/0x11 -[ 570.144601] [<ffffffff811347f5>] __fput+0xff/0x1a5 -[ 570.144601] [<ffffffff811348cb>] ____fput+0x9/0xb -[ 570.144601] [<ffffffff81056682>] task_work_run+0x66/0x90 -[ 570.144601] [<ffffffff8100189e>] prepare_exit_to_usermode+0x8c/0xa7 -[ 570.144601] [<ffffffff81001a26>] syscall_return_slowpath+0x16d/0x19b -[ 570.144601] [<ffffffff813babb1>] int_ret_from_sys_call+0x25/0x9f -[ 570.144601] Code: 48 8b 83 c8 01 00 00 a8 01 74 12 48 89 df e8 8b 27 14 e1 b8 f7 ff ff ff e9 b7 00 00 00 8a 43 12 a8 0b 74 1c 48 8b 83 a8 04 00 00 <48> 8b 80 e0 04 00 00 65 ff 08 48 c7 83 a8 04 00 00 00 00 00 00 -[ 570.144601] RIP [<ffffffffa018c701>] pppoe_release+0x50/0x101 [pppoe] -[ 570.144601] RSP <ffff880036b63e08> -[ 570.144601] CR2: 00000000000004e0 -[ 570.200518] ---[ end trace 46956baf17349563 ]--- - -pppoe_flush_dev() has no reason to override sk->sk_state with -PPPOX_ZOMBIE. pppox_unbind_sock() already sets sk->sk_state to -PPPOX_DEAD, which is the correct state given that sk is unbound and -po->pppoe_dev is NULL. - -Fixes: 2b018d57ff18 ("pppoe: drop PPPOX_ZOMBIEs in pppoe_release") -Tested-by: Oleksii Berezhniak <core@irc.lg.ua> -Signed-off-by: Guillaume Nault <g.nault@alphalink.fr> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - ---- a/drivers/net/ppp/pppoe.c -+++ b/drivers/net/ppp/pppoe.c -@@ -313,7 +313,6 @@ static void pppoe_flush_dev(struct net_d - if (po->pppoe_dev == dev && - sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND | PPPOX_ZOMBIE)) { - pppox_unbind_sock(sk); -- sk->sk_state = PPPOX_ZOMBIE; - sk->sk_state_change(sk); - po->pppoe_dev = NULL; - dev_put(dev); diff --git a/target/linux/generic/patches-3.18/081-05-ppp-fix-pppoe_dev-deletion-condition-in-pppoe_releas.patch b/target/linux/generic/patches-3.18/081-05-ppp-fix-pppoe_dev-deletion-condition-in-pppoe_releas.patch deleted file mode 100644 index b1ae60b028..0000000000 --- a/target/linux/generic/patches-3.18/081-05-ppp-fix-pppoe_dev-deletion-condition-in-pppoe_releas.patch +++ /dev/null @@ -1,29 +0,0 @@ -From: Guillaume Nault <g.nault@alphalink.fr> -Date: Thu, 22 Oct 2015 16:57:10 +0200 -Subject: [PATCH] ppp: fix pppoe_dev deletion condition in pppoe_release() - -We can't rely on PPPOX_ZOMBIE to decide whether to clear po->pppoe_dev. -PPPOX_ZOMBIE can be set by pppoe_disc_rcv() even when po->pppoe_dev is -NULL. So we have no guarantee that (sk->sk_state & PPPOX_ZOMBIE) implies -(po->pppoe_dev != NULL). -Since we're releasing a PPPoE socket, we want to release the pppoe_dev -if it exists and reset sk_state to PPPOX_DEAD, no matter the previous -value of sk_state. So we can just check for po->pppoe_dev and avoid any -assumption on sk->sk_state. - -Fixes: 2b018d57ff18 ("pppoe: drop PPPOX_ZOMBIEs in pppoe_release") -Signed-off-by: Guillaume Nault <g.nault@alphalink.fr> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - ---- a/drivers/net/ppp/pppoe.c -+++ b/drivers/net/ppp/pppoe.c -@@ -589,7 +589,7 @@ static int pppoe_release(struct socket * - - po = pppox_sk(sk); - -- if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND | PPPOX_ZOMBIE)) { -+ if (po->pppoe_dev) { - dev_put(po->pppoe_dev); - po->pppoe_dev = NULL; - } diff --git a/target/linux/generic/patches-3.18/090-overlayfs-fallback-to-readonly-when-full.patch b/target/linux/generic/patches-3.18/090-overlayfs-fallback-to-readonly-when-full.patch index 6fbbc25ae0..1bcd5159db 100644 --- a/target/linux/generic/patches-3.18/090-overlayfs-fallback-to-readonly-when-full.patch +++ b/target/linux/generic/patches-3.18/090-overlayfs-fallback-to-readonly-when-full.patch @@ -44,7 +44,7 @@ Miklos --- a/fs/overlayfs/copy_up.c +++ b/fs/overlayfs/copy_up.c -@@ -300,6 +300,9 @@ int ovl_copy_up_one(struct dentry *paren +@@ -311,6 +311,9 @@ int ovl_copy_up_one(struct dentry *paren struct cred *override_cred; char *link = NULL; diff --git a/target/linux/generic/patches-3.18/099-module_arch_freeing_init-new-hook-for-archs-before-m.patch b/target/linux/generic/patches-3.18/099-module_arch_freeing_init-new-hook-for-archs-before-m.patch index d00f751cdc..a6310c625c 100644 --- a/target/linux/generic/patches-3.18/099-module_arch_freeing_init-new-hook-for-archs-before-m.patch +++ b/target/linux/generic/patches-3.18/099-module_arch_freeing_init-new-hook-for-archs-before-m.patch @@ -145,7 +145,7 @@ Origin: backport, https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.gi #endif --- a/kernel/module.c +++ b/kernel/module.c -@@ -1833,6 +1833,10 @@ void __weak module_arch_cleanup(struct m +@@ -1837,6 +1837,10 @@ void __weak module_arch_cleanup(struct m { } @@ -156,7 +156,7 @@ Origin: backport, https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.gi /* Free a module, remove from lists, etc. */ static void free_module(struct module *mod) { -@@ -1865,6 +1869,7 @@ static void free_module(struct module *m +@@ -1869,6 +1873,7 @@ static void free_module(struct module *m /* This may be NULL, but that's OK */ unset_module_init_ro_nx(mod); @@ -164,7 +164,7 @@ Origin: backport, https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.gi module_free(mod, mod->module_init); kfree(mod->args); percpu_modfree(mod); -@@ -2954,6 +2959,7 @@ static struct module *layout_and_allocat +@@ -2958,6 +2963,7 @@ static struct module *layout_and_allocat static void module_deallocate(struct module *mod, struct load_info *info) { percpu_modfree(mod); @@ -172,7 +172,7 @@ Origin: backport, https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.gi module_free(mod, mod->module_init); module_free(mod, mod->module_core); } -@@ -3077,6 +3083,7 @@ static int do_init_module(struct module +@@ -3081,6 +3087,7 @@ static int do_init_module(struct module mod->strtab = mod->core_strtab; #endif unset_module_init_ro_nx(mod); diff --git a/target/linux/generic/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch b/target/linux/generic/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch index aa315143fe..761cff316d 100644 --- a/target/linux/generic/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch +++ b/target/linux/generic/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch @@ -20,7 +20,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> --- a/drivers/mtd/bcm47xxpart.c +++ b/drivers/mtd/bcm47xxpart.c -@@ -118,8 +118,8 @@ static int bcm47xxpart_parse(struct mtd_info *master, +@@ -118,8 +118,8 @@ static int bcm47xxpart_parse(struct mtd_ /* Parse block by block looking for magics */ for (offset = 0; offset <= master->size - blocksize; offset += blocksize) { diff --git a/target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch b/target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch index f9e81f9395..9073f795e2 100644 --- a/target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch +++ b/target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch @@ -14,11 +14,9 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> drivers/mtd/bcm47xxpart.c | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) -diff --git a/drivers/mtd/bcm47xxpart.c b/drivers/mtd/bcm47xxpart.c -index 4450e74..1ab3451 100644 --- a/drivers/mtd/bcm47xxpart.c +++ b/drivers/mtd/bcm47xxpart.c -@@ -66,11 +66,13 @@ static const char *bcm47xxpart_trx_data_part_name(struct mtd_info *master, +@@ -66,11 +66,13 @@ static const char *bcm47xxpart_trx_data_ { uint32_t buf; size_t bytes_read; @@ -36,7 +34,7 @@ index 4450e74..1ab3451 100644 goto out_default; } -@@ -95,6 +97,7 @@ static int bcm47xxpart_parse(struct mtd_info *master, +@@ -95,6 +97,7 @@ static int bcm47xxpart_parse(struct mtd_ int trx_part = -1; int last_trx_part = -1; int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, }; @@ -44,7 +42,7 @@ index 4450e74..1ab3451 100644 /* * Some really old flashes (like AT45DB*) had smaller erasesize-s, but -@@ -128,10 +131,11 @@ static int bcm47xxpart_parse(struct mtd_info *master, +@@ -128,10 +131,11 @@ static int bcm47xxpart_parse(struct mtd_ } /* Read beginning of the block */ @@ -60,7 +58,7 @@ index 4450e74..1ab3451 100644 continue; } -@@ -254,10 +258,11 @@ static int bcm47xxpart_parse(struct mtd_info *master, +@@ -254,10 +258,11 @@ static int bcm47xxpart_parse(struct mtd_ } /* Read middle of the block */ @@ -76,7 +74,7 @@ index 4450e74..1ab3451 100644 continue; } -@@ -277,10 +282,11 @@ static int bcm47xxpart_parse(struct mtd_info *master, +@@ -277,10 +282,11 @@ static int bcm47xxpart_parse(struct mtd_ } offset = master->size - possible_nvram_sizes[i]; @@ -92,6 +90,3 @@ index 4450e74..1ab3451 100644 continue; } --- -1.8.4.5 - diff --git a/target/linux/generic/patches-3.18/204-module_strip.patch b/target/linux/generic/patches-3.18/204-module_strip.patch index 09bffe0673..deef6b0c9a 100644 --- a/target/linux/generic/patches-3.18/204-module_strip.patch +++ b/target/linux/generic/patches-3.18/204-module_strip.patch @@ -109,7 +109,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> config INIT_ALL_POSSIBLE --- a/kernel/module.c +++ b/kernel/module.c -@@ -2670,6 +2670,7 @@ static struct module *setup_load_info(st +@@ -2674,6 +2674,7 @@ static struct module *setup_load_info(st static int check_modinfo(struct module *mod, struct load_info *info, int flags) { @@ -117,7 +117,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> const char *modmagic = get_modinfo(info, "vermagic"); int err; -@@ -2695,6 +2696,7 @@ static int check_modinfo(struct module * +@@ -2699,6 +2700,7 @@ static int check_modinfo(struct module * pr_warn("%s: module is from the staging directory, the quality " "is unknown, you have been warned.\n", mod->name); } diff --git a/target/linux/generic/patches-3.18/431-mtd-bcm47xxpart-check-for-bad-blocks-when-calculatin.patch b/target/linux/generic/patches-3.18/431-mtd-bcm47xxpart-check-for-bad-blocks-when-calculatin.patch index 6adac77669..5ad82f1f51 100644 --- a/target/linux/generic/patches-3.18/431-mtd-bcm47xxpart-check-for-bad-blocks-when-calculatin.patch +++ b/target/linux/generic/patches-3.18/431-mtd-bcm47xxpart-check-for-bad-blocks-when-calculatin.patch @@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> --- a/drivers/mtd/bcm47xxpart.c +++ b/drivers/mtd/bcm47xxpart.c -@@ -61,6 +61,34 @@ static void bcm47xxpart_add_part(struct mtd_partition *part, const char *name, +@@ -61,6 +61,34 @@ static void bcm47xxpart_add_part(struct part->mask_flags = mask_flags; } @@ -48,7 +48,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> static const char *bcm47xxpart_trx_data_part_name(struct mtd_info *master, size_t offset) { -@@ -182,6 +210,8 @@ static int bcm47xxpart_parse(struct mtd_info *master, +@@ -182,6 +210,8 @@ static int bcm47xxpart_parse(struct mtd_ /* TRX */ if (buf[0x000 / 4] == TRX_MAGIC) { @@ -57,7 +57,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> if (BCM47XXPART_MAX_PARTS - curr_part < 4) { pr_warn("Not enough partitions left to register trx, scanning stopped!\n"); break; -@@ -196,18 +226,18 @@ static int bcm47xxpart_parse(struct mtd_info *master, +@@ -196,18 +226,18 @@ static int bcm47xxpart_parse(struct mtd_ i = 0; /* We have LZMA loader if offset[2] points to sth */ if (trx->offset[2]) { @@ -82,7 +82,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> i++; } -@@ -219,11 +249,11 @@ static int bcm47xxpart_parse(struct mtd_info *master, +@@ -219,11 +249,11 @@ static int bcm47xxpart_parse(struct mtd_ if (trx->offset[i]) { const char *name; diff --git a/target/linux/generic/patches-3.18/630-packet_socket_type.patch b/target/linux/generic/patches-3.18/630-packet_socket_type.patch index 31f4bca2a0..c3c0fe4664 100644 --- a/target/linux/generic/patches-3.18/630-packet_socket_type.patch +++ b/target/linux/generic/patches-3.18/630-packet_socket_type.patch @@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> #define PACKET_FANOUT_LB 1 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c -@@ -1516,6 +1516,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1530,6 +1530,7 @@ static int packet_rcv_spkt(struct sk_buf { struct sock *sk; struct sockaddr_pkt *spkt; @@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> /* * When we registered the protocol we saved the socket in the data -@@ -1523,6 +1524,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1537,6 +1538,7 @@ static int packet_rcv_spkt(struct sk_buf */ sk = pt->af_packet_priv; @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> /* * Yank back the headers [hope the device set this -@@ -1535,7 +1537,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1549,7 +1551,7 @@ static int packet_rcv_spkt(struct sk_buf * so that this procedure is noop. */ @@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> goto out; if (!net_eq(dev_net(dev), sock_net(sk))) -@@ -1742,12 +1744,12 @@ static int packet_rcv(struct sk_buff *sk +@@ -1748,12 +1750,12 @@ static int packet_rcv(struct sk_buff *sk int skb_len = skb->len; unsigned int snaplen, res; @@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -1867,12 +1869,12 @@ static int tpacket_rcv(struct sk_buff *s +@@ -1873,12 +1875,12 @@ static int tpacket_rcv(struct sk_buff *s BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32); BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48); @@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -2807,6 +2809,7 @@ static int packet_create(struct net *net +@@ -2828,6 +2830,7 @@ static int packet_create(struct net *net spin_lock_init(&po->bind_lock); mutex_init(&po->pg_vec_lock); po->prot_hook.func = packet_rcv; @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> if (sock->type == SOCK_PACKET) po->prot_hook.func = packet_rcv_spkt; -@@ -3387,6 +3390,16 @@ packet_setsockopt(struct socket *sock, i +@@ -3408,6 +3411,16 @@ packet_setsockopt(struct socket *sock, i po->xmit = val ? packet_direct_xmit : dev_queue_xmit; return 0; } @@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> default: return -ENOPROTOOPT; } -@@ -3438,6 +3451,13 @@ static int packet_getsockopt(struct sock +@@ -3459,6 +3472,13 @@ static int packet_getsockopt(struct sock case PACKET_VNET_HDR: val = po->has_vnet_hdr; break; diff --git a/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch b/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch index 3f0dcd3ae2..aef3832b0f 100644 --- a/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch +++ b/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch @@ -35,7 +35,7 @@ obj-$(CONFIG_NET_UDP_TUNNEL) += ip6_udp_tunnel.o --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c -@@ -1317,7 +1317,7 @@ out: +@@ -1318,7 +1318,7 @@ out: return ret; } @@ -44,7 +44,7 @@ const struct in6_addr *daddr, unsigned int prefs, struct in6_addr *saddr) { -@@ -1442,7 +1442,6 @@ try_nextdev: +@@ -1443,7 +1443,6 @@ try_nextdev: in6_ifa_put(hiscore->ifa); return 0; } @@ -52,7 +52,7 @@ int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr, u32 banned_flags) -@@ -5451,6 +5450,9 @@ int __init addrconf_init(void) +@@ -5467,6 +5466,9 @@ int __init addrconf_init(void) ipv6_addr_label_rtnl_register(); @@ -62,7 +62,7 @@ return 0; errout: rtnl_af_unregister(&inet6_ops); -@@ -5470,6 +5472,9 @@ void addrconf_cleanup(void) +@@ -5486,6 +5488,9 @@ void addrconf_cleanup(void) struct net_device *dev; int i; diff --git a/target/linux/generic/patches-3.18/662-use_fq_codel_by_default.patch b/target/linux/generic/patches-3.18/662-use_fq_codel_by_default.patch index ba7c384ad2..5caf933764 100644 --- a/target/linux/generic/patches-3.18/662-use_fq_codel_by_default.patch +++ b/target/linux/generic/patches-3.18/662-use_fq_codel_by_default.patch @@ -51,7 +51,7 @@ EXPORT_SYMBOL(default_qdisc_ops); /* Main transmission queue. */ -@@ -737,7 +737,7 @@ static void attach_one_default_qdisc(str +@@ -739,7 +739,7 @@ static void attach_one_default_qdisc(str if (dev->tx_queue_len) { qdisc = qdisc_create_dflt(dev_queue, diff --git a/target/linux/generic/patches-3.18/810-pci_disable_common_quirks.patch b/target/linux/generic/patches-3.18/810-pci_disable_common_quirks.patch index b9b3e0aba8..1b7bead486 100644 --- a/target/linux/generic/patches-3.18/810-pci_disable_common_quirks.patch +++ b/target/linux/generic/patches-3.18/810-pci_disable_common_quirks.patch @@ -23,7 +23,7 @@ /* The Mellanox Tavor device gives false positive parity errors * Mark this device with a broken_parity_status, to allow * PCI scanning code to "skip" this now blacklisted device. -@@ -2908,6 +2909,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I +@@ -2917,6 +2918,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, 0x65fa, quirk_intel_mc_errata); @@ -31,7 +31,7 @@ /* * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. To -@@ -2964,6 +2966,8 @@ static void fixup_debug_report(struct pc +@@ -2973,6 +2975,8 @@ static void fixup_debug_report(struct pc } } @@ -40,7 +40,7 @@ /* * Some BIOS implementations leave the Intel GPU interrupts enabled, * even though no one is handling them (f.e. i915 driver is never loaded). -@@ -2998,6 +3002,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN +@@ -3007,6 +3011,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, 0x0152, disable_igfx_irq); diff --git a/target/linux/generic/patches-3.18/902-debloat_proc.patch b/target/linux/generic/patches-3.18/902-debloat_proc.patch index 5cecd1e677..79cecf90d4 100644 --- a/target/linux/generic/patches-3.18/902-debloat_proc.patch +++ b/target/linux/generic/patches-3.18/902-debloat_proc.patch @@ -1,6 +1,6 @@ --- a/fs/locks.c +++ b/fs/locks.c -@@ -2611,6 +2611,8 @@ static const struct file_operations proc +@@ -2620,6 +2620,8 @@ static const struct file_operations proc static int __init proc_locks_init(void) { @@ -173,7 +173,7 @@ goto err; --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -2934,6 +2934,8 @@ static __net_initdata struct pernet_oper +@@ -2933,6 +2933,8 @@ static __net_initdata struct pernet_oper static int __init proto_init(void) { diff --git a/target/linux/generic/patches-3.18/903-debloat_direct_io.patch b/target/linux/generic/patches-3.18/903-debloat_direct_io.patch index 92190e47a9..dbb08ca4e7 100644 --- a/target/linux/generic/patches-3.18/903-debloat_direct_io.patch +++ b/target/linux/generic/patches-3.18/903-debloat_direct_io.patch @@ -26,7 +26,7 @@ endif --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -2528,12 +2528,25 @@ enum { +@@ -2529,12 +2529,25 @@ enum { DIO_ASYNC_EXTEND = 0x04, }; diff --git a/target/linux/imx6/patches-3.18/201-pci_imx6_ventana_fixup-for-IRQ-mismapping.patch b/target/linux/imx6/patches-3.18/201-pci_imx6_ventana_fixup-for-IRQ-mismapping.patch index 4db1569d89..4e75086c9e 100644 --- a/target/linux/imx6/patches-3.18/201-pci_imx6_ventana_fixup-for-IRQ-mismapping.patch +++ b/target/linux/imx6/patches-3.18/201-pci_imx6_ventana_fixup-for-IRQ-mismapping.patch @@ -19,7 +19,7 @@ Date: Thu Feb 27 00:59:53 2014 -0800 --- a/drivers/pci/host/pci-imx6.c +++ b/drivers/pci/host/pci-imx6.c -@@ -553,6 +553,39 @@ static int __init imx6_add_pcie_port(str +@@ -554,6 +554,39 @@ static int __init imx6_add_pcie_port(str return 0; } @@ -59,7 +59,7 @@ Date: Thu Feb 27 00:59:53 2014 -0800 static int __init imx6_pcie_probe(struct platform_device *pdev) { struct imx6_pcie *imx6_pcie; -@@ -618,6 +651,9 @@ static int __init imx6_pcie_probe(struct +@@ -619,6 +652,9 @@ static int __init imx6_pcie_probe(struct return PTR_ERR(imx6_pcie->iomuxc_gpr); } diff --git a/target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch b/target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch index a123ce384f..85311c21f2 100644 --- a/target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch +++ b/target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch @@ -5514,7 +5514,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> (transaction layer end-to-end CRC checking). --- a/include/linux/pci.h +++ b/include/linux/pci.h -@@ -1156,6 +1156,8 @@ void pci_walk_bus(struct pci_bus *top, i +@@ -1160,6 +1160,8 @@ void pci_walk_bus(struct pci_bus *top, i void *userdata); int pci_cfg_space_size(struct pci_dev *dev); unsigned char pci_bus_max_busnr(struct pci_bus *bus); diff --git a/target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch b/target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch index cf2c5cbd5b..dcd8461a0e 100644 --- a/target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch +++ b/target/linux/lantiq/patches-3.18/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 -@@ -4303,7 +4303,7 @@ hub_port_init (struct usb_hub *hub, stru +@@ -4323,7 +4323,7 @@ hub_port_init (struct usb_hub *hub, stru udev->ttport = hdev->ttport; } else if (udev->speed != USB_SPEED_HIGH && hdev->speed == USB_SPEED_HIGH) { diff --git a/target/linux/mvebu/patches-3.18/209-solidrun_clearfog.patch b/target/linux/mvebu/patches-3.18/209-solidrun_clearfog.patch index 60fcfd7a3d..ff6c2179bc 100644 --- a/target/linux/mvebu/patches-3.18/209-solidrun_clearfog.patch +++ b/target/linux/mvebu/patches-3.18/209-solidrun_clearfog.patch @@ -7,4 +7,4 @@ + armada-388-clearfog.dtb \ armada-385-rd.dtb dtb-$(CONFIG_MACH_ARMADA_XP) += \ - armada-xp-axpwifiap.dtb \ + armada-xp-axpwifiap.dtb \ diff --git a/target/linux/ramips/patches-3.18/0037-USB-phy-add-ralink-SoC-driver.patch b/target/linux/ramips/patches-3.18/0037-USB-phy-add-ralink-SoC-driver.patch index 6cbb7e3df0..4dc5a7528b 100644 --- a/target/linux/ramips/patches-3.18/0037-USB-phy-add-ralink-SoC-driver.patch +++ b/target/linux/ramips/patches-3.18/0037-USB-phy-add-ralink-SoC-driver.patch @@ -1,6 +1,6 @@ --- a/drivers/phy/Kconfig +++ b/drivers/phy/Kconfig -@@ -239,6 +239,11 @@ +@@ -239,6 +239,11 @@ config PHY_XGENE help This option enables support for APM X-Gene SoC multi-purpose PHY. @@ -14,7 +14,7 @@ depends on RESET_CONTROLLER --- a/drivers/phy/Makefile +++ b/drivers/phy/Makefile -@@ -31,3 +31,4 @@ +@@ -31,3 +31,4 @@ obj-$(CONFIG_PHY_ST_SPEAR1340_MIPHY) += obj-$(CONFIG_PHY_XGENE) += phy-xgene.o obj-$(CONFIG_PHY_STIH407_USB) += phy-stih407-usb.o obj-$(CONFIG_PHY_STIH41X_USB) += phy-stih41x-usb.o diff --git a/target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch b/target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch index f407578762..4df5b3e7e5 100644 --- a/target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch +++ b/target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch @@ -16,7 +16,7 @@ /* EHCI, OHCI */ --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -1286,7 +1286,7 @@ static void hub_quiesce(struct usb_hub * +@@ -1306,7 +1306,7 @@ static void hub_quiesce(struct usb_hub * if (type != HUB_SUSPEND) { /* Disconnect all the children */ for (i = 0; i < hdev->maxchild; ++i) { @@ -5087,7 +5087,7 @@ return 1; } -@@ -2810,6 +2814,7 @@ static int prepare_ring(struct xhci_hcd +@@ -2820,6 +2824,7 @@ static int prepare_ring(struct xhci_hcd next = ring->enqueue; while (last_trb(xhci, ring, ring->enq_seg, next)) { @@ -5095,7 +5095,7 @@ /* If we're not dealing with 0.95 hardware or isoc rings * on AMD 0.96 host, clear the chain bit. */ -@@ -2819,6 +2824,9 @@ static int prepare_ring(struct xhci_hcd +@@ -2829,6 +2834,9 @@ static int prepare_ring(struct xhci_hcd next->link.control &= cpu_to_le32(~TRB_CHAIN); else next->link.control |= cpu_to_le32(TRB_CHAIN); @@ -5105,7 +5105,7 @@ wmb(); next->link.control ^= cpu_to_le32(TRB_CYCLE); -@@ -2949,6 +2957,9 @@ static void giveback_first_trb(struct xh +@@ -2959,6 +2967,9 @@ static void giveback_first_trb(struct xh start_trb->field[3] |= cpu_to_le32(start_cycle); else start_trb->field[3] &= cpu_to_le32(~TRB_CYCLE); @@ -5115,7 +5115,7 @@ xhci_ring_ep_doorbell(xhci, slot_id, ep_index, stream_id); } -@@ -3004,6 +3015,29 @@ static u32 xhci_td_remainder(unsigned in +@@ -3014,6 +3025,29 @@ static u32 xhci_td_remainder(unsigned in return (remainder >> 10) << 17; } @@ -5145,7 +5145,7 @@ /* * For xHCI 1.0 host controllers, TD size is the number of max packet sized * packets remaining in the TD (*not* including this TRB). -@@ -3161,6 +3195,7 @@ static int queue_bulk_sg_tx(struct xhci_ +@@ -3171,6 +3205,7 @@ static int queue_bulk_sg_tx(struct xhci_ } /* Set the TRB length, TD size, and interrupter fields. */ @@ -5153,7 +5153,7 @@ if (xhci->hci_version < 0x100) { remainder = xhci_td_remainder( urb->transfer_buffer_length - -@@ -3170,6 +3205,12 @@ static int queue_bulk_sg_tx(struct xhci_ +@@ -3180,6 +3215,12 @@ static int queue_bulk_sg_tx(struct xhci_ trb_buff_len, total_packet_count, urb, num_trbs - 1); } @@ -5166,7 +5166,7 @@ length_field = TRB_LEN(trb_buff_len) | remainder | TRB_INTR_TARGET(0); -@@ -3234,6 +3275,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3244,6 +3285,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd * int running_total, trb_buff_len, ret; unsigned int total_packet_count; u64 addr; @@ -5176,7 +5176,7 @@ if (urb->num_sgs) return queue_bulk_sg_tx(xhci, mem_flags, urb, slot_id, ep_index); -@@ -3258,6 +3302,25 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3268,6 +3312,25 @@ int xhci_queue_bulk_tx(struct xhci_hcd * num_trbs++; running_total += TRB_MAX_BUFF_SIZE; } @@ -5202,7 +5202,7 @@ ret = prepare_transfer(xhci, xhci->devs[slot_id], ep_index, urb->stream_id, -@@ -3334,6 +3397,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3344,6 +3407,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd * field |= TRB_ISP; /* Set the TRB length, TD size, and interrupter fields. */ @@ -5210,7 +5210,7 @@ if (xhci->hci_version < 0x100) { remainder = xhci_td_remainder( urb->transfer_buffer_length - -@@ -3343,6 +3407,10 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3353,6 +3417,10 @@ int xhci_queue_bulk_tx(struct xhci_hcd * trb_buff_len, total_packet_count, urb, num_trbs - 1); } @@ -5221,7 +5221,7 @@ length_field = TRB_LEN(trb_buff_len) | remainder | TRB_INTR_TARGET(0); -@@ -3432,7 +3500,11 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * +@@ -3442,7 +3510,11 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * field |= 0x1; /* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */ @@ -5233,7 +5233,7 @@ if (urb->transfer_buffer_length > 0) { if (setup->bRequestType & USB_DIR_IN) field |= TRB_TX_TYPE(TRB_DATA_IN); -@@ -3456,7 +3528,12 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * +@@ -3466,7 +3538,12 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * field = TRB_TYPE(TRB_DATA); length_field = TRB_LEN(urb->transfer_buffer_length) | @@ -5246,7 +5246,7 @@ TRB_INTR_TARGET(0); if (urb->transfer_buffer_length > 0) { if (setup->bRequestType & USB_DIR_IN) -@@ -3579,6 +3656,9 @@ static int xhci_queue_isoc_tx(struct xhc +@@ -3589,6 +3666,9 @@ static int xhci_queue_isoc_tx(struct xhc u64 start_addr, addr; int i, j; bool more_trbs_coming; @@ -5256,7 +5256,7 @@ ep_ring = xhci->devs[slot_id]->eps[ep_index].ring; -@@ -3592,6 +3672,21 @@ static int xhci_queue_isoc_tx(struct xhc +@@ -3602,6 +3682,21 @@ static int xhci_queue_isoc_tx(struct xhc start_trb = &ep_ring->enqueue->generic; start_cycle = ep_ring->cycle_state; @@ -5278,7 +5278,7 @@ urb_priv = urb->hcpriv; /* Queue the first TRB, even if it's zero-length */ for (i = 0; i < num_tds; i++) { -@@ -3663,9 +3758,13 @@ static int xhci_queue_isoc_tx(struct xhc +@@ -3673,9 +3768,13 @@ static int xhci_queue_isoc_tx(struct xhc } else { td->last_trb = ep_ring->enqueue; field |= TRB_IOC; @@ -5292,7 +5292,7 @@ /* Set BEI bit except for the last td */ if (i < num_tds - 1) field |= TRB_BEI; -@@ -3680,6 +3779,7 @@ static int xhci_queue_isoc_tx(struct xhc +@@ -3690,6 +3789,7 @@ static int xhci_queue_isoc_tx(struct xhc trb_buff_len = td_remain_len; /* Set the TRB length, TD size, & interrupter fields. */ @@ -5300,7 +5300,7 @@ if (xhci->hci_version < 0x100) { remainder = xhci_td_remainder( td_len - running_total); -@@ -3689,6 +3789,10 @@ static int xhci_queue_isoc_tx(struct xhc +@@ -3699,6 +3799,10 @@ static int xhci_queue_isoc_tx(struct xhc total_packet_count, urb, (trbs_per_td - j - 1)); } @@ -5413,7 +5413,7 @@ xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Finished xhci_run for USB2 roothub"); return 0; -@@ -1648,6 +1689,14 @@ int xhci_drop_endpoint(struct usb_hcd *h +@@ -1650,6 +1691,14 @@ int xhci_drop_endpoint(struct usb_hcd *h u32 drop_flag; u32 new_add_flags, new_drop_flags; int ret; @@ -5428,7 +5428,7 @@ ret = xhci_check_args(hcd, udev, ep, 1, true, __func__); if (ret <= 0) -@@ -1695,6 +1744,40 @@ int xhci_drop_endpoint(struct usb_hcd *h +@@ -1697,6 +1746,40 @@ int xhci_drop_endpoint(struct usb_hcd *h xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep); @@ -5469,7 +5469,7 @@ xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n", (unsigned int) ep->desc.bEndpointAddress, udev->slot_id, -@@ -1727,6 +1810,19 @@ int xhci_add_endpoint(struct usb_hcd *hc +@@ -1729,6 +1812,19 @@ int xhci_add_endpoint(struct usb_hcd *hc u32 new_add_flags, new_drop_flags; struct xhci_virt_device *virt_dev; int ret = 0; @@ -5489,7 +5489,7 @@ ret = xhci_check_args(hcd, udev, ep, 1, true, __func__); if (ret <= 0) { -@@ -1793,6 +1889,56 @@ int xhci_add_endpoint(struct usb_hcd *hc +@@ -1795,6 +1891,56 @@ int xhci_add_endpoint(struct usb_hcd *hc return -ENOMEM; } @@ -5546,7 +5546,7 @@ ctrl_ctx->add_flags |= cpu_to_le32(added_ctxs); new_add_flags = le32_to_cpu(ctrl_ctx->add_flags); -@@ -4463,8 +4609,14 @@ static u16 xhci_call_host_update_timeout +@@ -4465,8 +4611,14 @@ static u16 xhci_call_host_update_timeout u16 *timeout) { if (state == USB3_LPM_U1) @@ -5561,7 +5561,7 @@ return xhci_calculate_u2_timeout(xhci, udev, desc); return USB3_LPM_DISABLED; -@@ -4849,7 +5001,9 @@ int xhci_gen_setup(struct usb_hcd *hcd, +@@ -4851,7 +5003,9 @@ int xhci_gen_setup(struct usb_hcd *hcd, hcd->self.no_sg_constraint = 1; /* XHCI controllers don't stop the ep queue on short packets :| */ @@ -5571,7 +5571,7 @@ if (usb_hcd_is_primary_hcd(hcd)) { xhci = kzalloc(sizeof(struct xhci_hcd), GFP_KERNEL); -@@ -4912,6 +5066,10 @@ int xhci_gen_setup(struct usb_hcd *hcd, +@@ -4914,6 +5068,10 @@ int xhci_gen_setup(struct usb_hcd *hcd, goto error; xhci_dbg(xhci, "Reset complete\n"); @@ -5582,7 +5582,7 @@ /* Set dma_mask and coherent_dma_mask to 64-bits, * if xHC supports 64-bit addressing */ if (HCC_64BIT_ADDR(xhci->hcc_params) && -@@ -5006,8 +5164,57 @@ MODULE_DESCRIPTION(DRIVER_DESC); +@@ -5008,8 +5166,57 @@ MODULE_DESCRIPTION(DRIVER_DESC); MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_LICENSE("GPL"); @@ -5664,7 +5664,7 @@ /* xHCI PCI Configuration Registers */ #define XHCI_SBRN_OFFSET (0x60) -@@ -1587,8 +1602,12 @@ struct xhci_hcd { +@@ -1588,8 +1603,12 @@ struct xhci_hcd { /* Compliance Mode Recovery Data */ struct timer_list comp_mode_recovery_timer; u32 port_status_u0; @@ -5677,7 +5677,7 @@ }; /* convert between an HCD pointer and the corresponding EHCI_HCD */ -@@ -1736,6 +1755,26 @@ void xhci_urb_free_priv(struct xhci_hcd +@@ -1737,6 +1756,26 @@ void xhci_urb_free_priv(struct xhci_hcd void xhci_free_command(struct xhci_hcd *xhci, struct xhci_command *command); diff --git a/target/linux/ramips/patches-3.18/0301-mt7688-detect.patch b/target/linux/ramips/patches-3.18/0301-mt7688-detect.patch index e3f2887d8c..74e1c859da 100644 --- a/target/linux/ramips/patches-3.18/0301-mt7688-detect.patch +++ b/target/linux/ramips/patches-3.18/0301-mt7688-detect.patch @@ -94,7 +94,7 @@ --- a/drivers/net/ethernet/ralink/esw_rt3052.c +++ b/drivers/net/ethernet/ralink/esw_rt3052.c -@@ -611,7 +611,7 @@ static void esw_hw_init(struct rt305x_es +@@ -618,7 +618,7 @@ static void esw_hw_init(struct rt305x_es rt305x_mii_write(esw, 0, 29, 0x598b); /* select local register */ rt305x_mii_write(esw, 0, 31, 0x8000); @@ -103,7 +103,7 @@ int i; // u32 phy_val; u32 val; -@@ -1042,7 +1042,7 @@ esw_get_port_tr_badgood(struct switch_de +@@ -1049,7 +1049,7 @@ esw_get_port_tr_badgood(struct switch_de int shift = attr->id == RT5350_ESW_ATTR_PORT_TR_GOOD ? 0 : 16; u32 reg; diff --git a/target/linux/ramips/patches-3.18/500-alsa.patch b/target/linux/ramips/patches-3.18/500-alsa.patch index 5c7e50832b..d43e7d5f6b 100644 --- a/target/linux/ramips/patches-3.18/500-alsa.patch +++ b/target/linux/ramips/patches-3.18/500-alsa.patch @@ -1,6 +1,6 @@ --- a/sound/soc/Kconfig +++ b/sound/soc/Kconfig -@@ -56,6 +56,7 @@ +@@ -56,6 +56,7 @@ source "sound/soc/spear/Kconfig" source "sound/soc/tegra/Kconfig" source "sound/soc/txx9/Kconfig" source "sound/soc/ux500/Kconfig" @@ -10,14 +10,14 @@ source "sound/soc/codecs/Kconfig" --- a/sound/soc/Makefile +++ b/sound/soc/Makefile -@@ -33,3 +33,4 @@ +@@ -33,3 +33,4 @@ obj-$(CONFIG_SND_SOC) += spear/ obj-$(CONFIG_SND_SOC) += tegra/ obj-$(CONFIG_SND_SOC) += txx9/ obj-$(CONFIG_SND_SOC) += ux500/ +obj-$(CONFIG_SND_SOC) += mtk/ --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig -@@ -725,7 +725,7 @@ +@@ -725,7 +725,7 @@ config SND_SOC_WM8955 tristate config SND_SOC_WM8960 @@ -7372,7 +7372,7 @@ +#endif --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c -@@ -1851,7 +1851,8 @@ +@@ -1851,7 +1851,8 @@ static int soc_probe(struct platform_dev /* Bodge while we unpick instantiation */ card->dev = &pdev->dev; @@ -8100,7 +8100,7 @@ { 0x4, 0x0000 }, { 0x5, 0x0008 }, { 0x6, 0x0000 }, -@@ -88,8 +88,8 @@ +@@ -88,8 +88,8 @@ static const struct reg_default wm8960_r { 0x25, 0x0050 }, { 0x26, 0x0000 }, { 0x27, 0x0000 }, @@ -8111,7 +8111,7 @@ { 0x2a, 0x0040 }, { 0x2b, 0x0000 }, { 0x2c, 0x0000 }, -@@ -126,8 +126,7 @@ +@@ -126,8 +126,7 @@ struct wm8960_priv { bool deemph; int playback_fs; }; @@ -8121,7 +8121,7 @@ /* enumerated controls */ static const char *wm8960_polarity[] = {"No Inversion", "Left Inverted", -@@ -181,8 +180,8 @@ +@@ -181,8 +180,8 @@ static int wm8960_get_deemph(struct snd_ struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); @@ -8132,7 +8132,7 @@ } static int wm8960_put_deemph(struct snd_kcontrol *kcontrol, -@@ -200,6 +199,65 @@ +@@ -200,6 +199,65 @@ static int wm8960_put_deemph(struct snd_ return wm8960_set_deemph(codec); } @@ -8198,7 +8198,7 @@ static const DECLARE_TLV_DB_SCALE(adc_tlv, -9700, 50, 0); static const DECLARE_TLV_DB_SCALE(dac_tlv, -12700, 50, 1); static const DECLARE_TLV_DB_SCALE(bypass_tlv, -2100, 300, 0); -@@ -542,6 +600,9 @@ +@@ -542,6 +600,9 @@ static int wm8960_set_dai_fmt(struct snd /* set iface */ snd_soc_write(codec, WM8960_IFACE1, iface); @@ -8208,7 +8208,7 @@ return 0; } -@@ -623,11 +684,15 @@ +@@ -623,11 +684,15 @@ static int wm8960_set_bias_level_out3(st break; case SND_SOC_BIAS_PREPARE: @@ -8224,7 +8224,7 @@ if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) { regcache_sync(wm8960->regmap); -@@ -650,9 +715,13 @@ +@@ -650,9 +715,13 @@ static int wm8960_set_bias_level_out3(st /* Set VMID to 2x250k */ snd_soc_update_bits(codec, WM8960_POWER1, 0x180, 0x100); @@ -8238,7 +8238,7 @@ /* Enable anti-pop features */ snd_soc_write(codec, WM8960_APOP1, WM8960_POBCTRL | WM8960_SOFT_ST | -@@ -661,6 +730,7 @@ +@@ -661,6 +730,7 @@ static int wm8960_set_bias_level_out3(st /* Disable VMID and VREF, let them discharge */ snd_soc_write(codec, WM8960_POWER1, 0); msleep(600); @@ -8246,7 +8246,7 @@ break; } -@@ -853,7 +923,6 @@ +@@ -853,7 +923,6 @@ static int wm8960_set_dai_pll(struct snd if (pll_div.k) { reg |= 0x20; @@ -8254,7 +8254,7 @@ snd_soc_write(codec, WM8960_PLL2, (pll_div.k >> 16) & 0xff); snd_soc_write(codec, WM8960_PLL3, (pll_div.k >> 8) & 0xff); snd_soc_write(codec, WM8960_PLL4, pll_div.k & 0xff); -@@ -962,7 +1031,7 @@ +@@ -962,7 +1031,7 @@ static int wm8960_probe(struct snd_soc_c { struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); struct wm8960_data *pdata = dev_get_platdata(codec->dev); @@ -8263,7 +8263,7 @@ wm8960->set_bias_level = wm8960_set_bias_level_out3; -@@ -973,26 +1042,9 @@ +@@ -973,26 +1042,9 @@ static int wm8960_probe(struct snd_soc_c wm8960->set_bias_level = wm8960_set_bias_level_capless; } diff --git a/target/linux/sunxi/patches-3.18/200-mmc-add-sdio-function-subnode.patch b/target/linux/sunxi/patches-3.18/200-mmc-add-sdio-function-subnode.patch index 96662d81d0..dcbb3a4767 100644 --- a/target/linux/sunxi/patches-3.18/200-mmc-add-sdio-function-subnode.patch +++ b/target/linux/sunxi/patches-3.18/200-mmc-add-sdio-function-subnode.patch @@ -49,7 +49,7 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> put_device(&card->dev); --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c -@@ -1207,6 +1207,34 @@ EXPORT_SYMBOL(mmc_of_parse_voltage); +@@ -1231,6 +1231,34 @@ EXPORT_SYMBOL(mmc_of_parse_voltage); #endif /* CONFIG_OF */ |