CC: kernel: update kernel 3.18 to version 3.18.27
authorHauke Mehrtens <hauke@openwrt.org>
Thu, 3 Mar 2016 22:28:12 +0000 (22:28 +0000)
committerHauke Mehrtens <hauke@openwrt.org>
Thu, 3 Mar 2016 22:28:12 +0000 (22:28 +0000)
Changelog:
* https://cdn.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.24
* https://cdn.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.25
* https://cdn.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.26
* https://cdn.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.27

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
git-svn-id: svn://svn.openwrt.org/openwrt/branches/chaos_calmer@48896 3c298f89-4303-0410-b956-a3cf2f4a3e73

39 files changed:
include/kernel-version.mk
target/linux/ar71xx/patches-3.18/610-MIPS-ath79-openwrt-machines.patch
target/linux/ar71xx/patches-3.18/707-MIPS-ath79-add-support-for-QCA953x-SoC.patch
target/linux/ar71xx/patches-3.18/735-MIPS-ath79-add-support-for-QCA956x-SoC.patch
target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch
target/linux/ar71xx/patches-3.18/903-MIPS-ath79-ubnt-rocket-m-xw-support.patch
target/linux/bcm53xx/patches-3.18/132-ARM-BCM5301X-Add-missing-Netgear-R8000-LEDs.patch
target/linux/bcm53xx/patches-3.18/186-USB-bcma-switch-to-GPIO-descriptor-for-power-control.patch
target/linux/brcm2708/patches-3.18/0024-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch
target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch
target/linux/brcm47xx/patches-3.18/800-bcma-add-table-of-serial-flashes-with-smaller-blocks.patch
target/linux/generic/patches-3.18/010-KEYS-Fix-keyring-ref-leak-in-join_session_keyring.patch [deleted file]
target/linux/generic/patches-3.18/081-01-pppoe-Use-workqueue-to-die-properly-when-a-PADT-is-r.patch
target/linux/generic/patches-3.18/081-02-pppoe-Lacks-DST-MAC-address-check.patch
target/linux/generic/patches-3.18/081-03-pppoe-drop-pppoe-device-in-pppoe_unbind_sock_work.patch
target/linux/generic/patches-3.18/081-04-ppp-don-t-override-sk-sk_state-in-pppoe_flush_dev.patch [deleted file]
target/linux/generic/patches-3.18/081-05-ppp-fix-pppoe_dev-deletion-condition-in-pppoe_releas.patch [deleted file]
target/linux/generic/patches-3.18/090-overlayfs-fallback-to-readonly-when-full.patch
target/linux/generic/patches-3.18/099-module_arch_freeing_init-new-hook-for-archs-before-m.patch
target/linux/generic/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch
target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch
target/linux/generic/patches-3.18/204-module_strip.patch
target/linux/generic/patches-3.18/431-mtd-bcm47xxpart-check-for-bad-blocks-when-calculatin.patch
target/linux/generic/patches-3.18/630-packet_socket_type.patch
target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch
target/linux/generic/patches-3.18/662-use_fq_codel_by_default.patch
target/linux/generic/patches-3.18/810-pci_disable_common_quirks.patch
target/linux/generic/patches-3.18/902-debloat_proc.patch
target/linux/generic/patches-3.18/903-debloat_direct_io.patch
target/linux/imx6/patches-3.18/201-pci_imx6_ventana_fixup-for-IRQ-mismapping.patch
target/linux/lantiq/patches-3.18/0001-MIPS-lantiq-add-pcie-driver.patch
target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch
target/linux/mvebu/patches-3.18/209-solidrun_clearfog.patch
target/linux/ramips/patches-3.18/0037-USB-phy-add-ralink-SoC-driver.patch
target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch
target/linux/ramips/patches-3.18/0301-mt7688-detect.patch
target/linux/ramips/patches-3.18/500-alsa.patch
target/linux/sunxi/patches-3.18/200-mmc-add-sdio-function-subnode.patch

index 6060776..3fc7dc5 100644 (file)
@@ -2,9 +2,9 @@
 
 LINUX_RELEASE?=1
 
-LINUX_VERSION-3.18 = .23
+LINUX_VERSION-3.18 = .27
 
-LINUX_KERNEL_MD5SUM-3.18.23 = dc6d265ab38716be3676ac294b481ad8
+LINUX_KERNEL_MD5SUM-3.18.27 = 015a01bf84e7c6bc9952551b4da45044
 
 ifdef KERNEL_PATCHVER
   LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
index 185cb9c..f181f6c 100644 (file)
  
  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.
  
  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
  
        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
index cf10af3..88d376c 100644 (file)
@@ -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
index eecccdc..6d836ad 100644 (file)
  }
 --- 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
  
  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
index 3a9ca14..d077b60 100644 (file)
  #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) {
   */
 --- 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 {
                                               &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) {
  #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;
  
  #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)
  {
  
  #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
  }
  
  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;
  
        /* 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;
                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)
  {
                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)
  {
index a1674a7..96a16c2 100644 (file)
@@ -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 */
index c117774..60fba13 100644 (file)
@@ -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
-
index 5031886..f1995d1 100644 (file)
@@ -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;
  
index e720949..e67b471 100644 (file)
@@ -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,
index 0c339d3..82d36f8 100644 (file)
@@ -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;
  
index de109e3..4fb8a87 100644 (file)
@@ -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);
index 99d909b..318dc55 100644 (file)
@@ -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 (file)
index 9c6a969..0000000
+++ /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
-
index de85830..347049a 100644 (file)
@@ -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);
  
index 3ce778e..f592929 100644 (file)
@@ -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.
         */
  
index f672c67..fc26b8f 100644 (file)
@@ -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 (file)
index 73f2e3d..0000000
+++ /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 (file)
index b1ae60b..0000000
+++ /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;
-       }
index 6fbbc25..1bcd515 100644 (file)
@@ -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;
  
index d00f751..a6310c6 100644 (file)
@@ -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);
index aa31514..761cff3 100644 (file)
@@ -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) {
index f9e81f9..9073f79 100644 (file)
@@ -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
-
index 09bffe0..deef6b0 100644 (file)
@@ -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);
        }
index 6adac77..5ad82f1 100644 (file)
@@ -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;
  
index 31f4bca..c3c0fe4 100644 (file)
@@ -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;
index 3f0dcd3..aef3832 100644 (file)
@@ -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;
  
index ba7c384..5caf933 100644 (file)
@@ -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,
index b9b3e0a..1b7bead 100644 (file)
@@ -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);
  
index 5cecd1e..79cecf9 100644 (file)
@@ -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)
  {
                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)
  {
index 92190e4..dbb08ca 100644 (file)
@@ -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,
  };
  
index 4db1569..4e75086 100644 (file)
@@ -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);
        }
  
index a123ce3..85311c2 100644 (file)
@@ -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);
index cf2c5cb..dcd8461 100644 (file)
@@ -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) {
index 60fcfd7..ff6c217 100644 (file)
@@ -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 \
index 6cbb7e3..4dc5a75 100644 (file)
@@ -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
index f407578..4df5b3e 100644 (file)
@@ -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) {
  
        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)) {
                        /* 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);
  
                        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);
        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;
  }
  
  /*
   * 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. */
                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);
                }
                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;
  
        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;
        }
  
        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. */
                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);
                }
                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 */
                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) |
                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;
  
        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;
  
        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;
                                        /* 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. */
                        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));
                        }
        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;
  
        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);
  
        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;
  
        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;
        }
  
        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)
                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 :| */
  
        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");
  
        /* 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");
  
  /* 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;
  };
  
  /* 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);
  
index e3f2887..74e1c85 100644 (file)
@@ -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);
                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;
  
index 5c7e508..d43e7d5 100644 (file)
@@ -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"
  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
 +#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;
  
        {  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 },
        { 0x2a, 0x0040 },
        { 0x2b, 0x0000 },
        { 0x2c, 0x0000 },
-@@ -126,8 +126,7 @@
+@@ -126,8 +126,7 @@ struct wm8960_priv {
        bool deemph;
        int playback_fs;
  };
  
  /* 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);
  
  }
  
  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);
  }
  
  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);
        return 0;
  }
  
-@@ -623,11 +684,15 @@
+@@ -623,11 +684,15 @@ static int wm8960_set_bias_level_out3(st
                break;
  
        case SND_SOC_BIAS_PREPARE:
                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);
                /* 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);
                break;
        }
  
-@@ -853,7 +923,6 @@
+@@ -853,7 +923,6 @@ static int wm8960_set_dai_pll(struct snd
  
        if (pll_div.k) {
                reg |= 0x20;
                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);
  
        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;
        }
  
index 96662d8..dcbb3a4 100644 (file)
@@ -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 */