kernel: update kernel 4.4 to version 4.4.15
authorHauke Mehrtens <hauke@hauke-m.de>
Wed, 13 Jul 2016 10:07:08 +0000 (12:07 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Wed, 13 Jul 2016 13:39:15 +0000 (15:39 +0200)
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
20 files changed:
include/kernel-version.mk
target/linux/bcm53xx/patches-4.4/089-0001-phy-bcm-ns-usb2-new-driver-for-USB-2.0-PHY-on-Norths.patch
target/linux/bcm53xx/patches-4.4/089-0002-phy-bcm-ns-usb2-checking-the-wrong-variable.patch
target/linux/bcm53xx/patches-4.4/190-usb-xhci-plat-fix-adding-usb3-lpm-capable-quirk.patch
target/linux/brcm2708/patches-4.4/0221-bpf-add-skb_postpush_rcsum-and-fix-dev_forward_skb-o.patch
target/linux/brcm47xx/patches-4.4/999-wl_exports.patch
target/linux/brcm63xx/patches-4.4/800-wl_exports.patch
target/linux/generic/patches-4.4/095-ARC-unwind-ensure-that-.debug_frame-is-generated-vs..patch
target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch
target/linux/generic/patches-4.4/646-bridge_fix_ipv6_mc_snooping_if_bridge_has_no_ipv6_address.patch [deleted file]
target/linux/generic/patches-4.4/821-usb-Remove-annoying-warning-about-bogus-URB.patch
target/linux/imx6/patches-4.4/204-net-igb-register-mii_bus-for-SerDes-w-external-phy.patch
target/linux/mediatek/patches-4.4/0019-xhci-mediatek-support-MTK-xHCI-host-controller.patch
target/linux/ramips/patches-4.4/0033-xhci-mediatek-support-MTK-xHCI-host-controller.patch
target/linux/ramips/patches-4.4/0085-pinmux-util.patch
target/linux/ramips/patches-4.4/0085-sdhci-no-wp.patch
target/linux/ramips/patches-4.4/0105-set_mt7621_soc_type.patch
target/linux/ramips/patches-4.4/0519-gsw_mt7621.patch
target/linux/ramips/patches-4.4/0520-esw-gmac.patch
target/linux/ramips/patches-4.4/0720-arch-mips-ralink-add-i2c-clocks.patch

index 5304c652f6967b1261008ec29bf5bac6a861524c..36097bbe269b0b74ee899c4df383f2d5e22035ff 100644 (file)
@@ -4,11 +4,11 @@ LINUX_RELEASE?=1
 
 LINUX_VERSION-3.18 = .29
 LINUX_VERSION-4.1 = .20
-LINUX_VERSION-4.4 = .14
+LINUX_VERSION-4.4 = .15
 
 LINUX_KERNEL_MD5SUM-3.18.29 = b25737a0bc98e80d12200de93f239c28
 LINUX_KERNEL_MD5SUM-4.1.20 = 075c38a3a23ca5bc80437b13606df00a
-LINUX_KERNEL_MD5SUM-4.4.14 = 59e99c3bf5d495f1f95d26257962ca3e
+LINUX_KERNEL_MD5SUM-4.4.15 = 7b59c25c783173969bfb62cac4f057ce
 
 ifdef KERNEL_PATCHVER
   LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
index 870bcb8d7ab67091c3429cb979e0dc690bd5bce9..c12cdb1861f1b5c63aa69e7bf1e80b76813ad9d7 100644 (file)
@@ -30,9 +30,6 @@ Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
  create mode 100644 drivers/phy/phy-bcm-ns-usb2.c
  create mode 100644 include/linux/bcma/bcma_driver_arm_c9.h
 
-diff --git a/Documentation/devicetree/bindings/phy/bcm-ns-usb2-phy.txt b/Documentation/devicetree/bindings/phy/bcm-ns-usb2-phy.txt
-new file mode 100644
-index 0000000..a7aee9e
 --- /dev/null
 +++ b/Documentation/devicetree/bindings/phy/bcm-ns-usb2-phy.txt
 @@ -0,0 +1,21 @@
@@ -57,8 +54,6 @@ index 0000000..a7aee9e
 +              clocks = <&genpll BCM_NSP_GENPLL_USB_PHY_REF_CLK>;
 +              clock-names = "phy-ref-clk";
 +      };
-diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
-index f6ff76e..f2b458f 100644
 --- a/drivers/phy/Kconfig
 +++ b/drivers/phy/Kconfig
 @@ -15,6 +15,15 @@ config GENERIC_PHY
@@ -77,8 +72,6 @@ index f6ff76e..f2b458f 100644
  config PHY_BERLIN_USB
        tristate "Marvell Berlin USB PHY Driver"
        depends on ARCH_BERLIN && RESET_CONTROLLER && HAS_IOMEM && OF
-diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile
-index f03fa1f..0de09e1 100644
 --- a/drivers/phy/Makefile
 +++ b/drivers/phy/Makefile
 @@ -3,6 +3,7 @@
@@ -89,9 +82,6 @@ index f03fa1f..0de09e1 100644
  obj-$(CONFIG_PHY_BERLIN_USB)          += phy-berlin-usb.o
  obj-$(CONFIG_PHY_BERLIN_SATA)         += phy-berlin-sata.o
  obj-$(CONFIG_PHY_DM816X_USB)          += phy-dm816x-usb.o
-diff --git a/drivers/phy/phy-bcm-ns-usb2.c b/drivers/phy/phy-bcm-ns-usb2.c
-new file mode 100644
-index 0000000..95ab6b2
 --- /dev/null
 +++ b/drivers/phy/phy-bcm-ns-usb2.c
 @@ -0,0 +1,137 @@
@@ -232,8 +222,6 @@ index 0000000..95ab6b2
 +module_platform_driver(bcm_ns_usb2_driver);
 +
 +MODULE_LICENSE("GPL v2");
-diff --git a/include/linux/bcma/bcma.h b/include/linux/bcma/bcma.h
-index 0367c63..e6b41f4 100644
 --- a/include/linux/bcma/bcma.h
 +++ b/include/linux/bcma/bcma.h
 @@ -4,6 +4,7 @@
@@ -244,9 +232,6 @@ index 0367c63..e6b41f4 100644
  #include <linux/bcma/bcma_driver_chipcommon.h>
  #include <linux/bcma/bcma_driver_pci.h>
  #include <linux/bcma/bcma_driver_pcie2.h>
-diff --git a/include/linux/bcma/bcma_driver_arm_c9.h b/include/linux/bcma/bcma_driver_arm_c9.h
-new file mode 100644
-index 0000000..93bd73d
 --- /dev/null
 +++ b/include/linux/bcma/bcma_driver_arm_c9.h
 @@ -0,0 +1,15 @@
@@ -265,6 +250,3 @@ index 0000000..93bd73d
 +#define  BCMA_DMU_CRU_STRAPS_CTRL_4BYTE                       0x00008000
 +
 +#endif /* LINUX_BCMA_DRIVER_ARM_C9_H_ */
--- 
-1.8.4.5
-
index 81144dc2b38ee9d354a677203fe14a6402f46b96..ae3462f43e1ef2ff6904b33f5f2876381cd96953 100644 (file)
@@ -12,11 +12,9 @@ Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
  drivers/phy/phy-bcm-ns-usb2.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
-diff --git a/drivers/phy/phy-bcm-ns-usb2.c b/drivers/phy/phy-bcm-ns-usb2.c
-index 95ab6b2..58dff80 100644
 --- a/drivers/phy/phy-bcm-ns-usb2.c
 +++ b/drivers/phy/phy-bcm-ns-usb2.c
-@@ -109,8 +109,8 @@ static int bcm_ns_usb2_probe(struct platform_device *pdev)
+@@ -109,8 +109,8 @@ static int bcm_ns_usb2_probe(struct plat
        }
  
        usb2->phy = devm_phy_create(dev, NULL, &ops);
@@ -27,6 +25,3 @@ index 95ab6b2..58dff80 100644
  
        phy_set_drvdata(usb2->phy, usb2);
        platform_set_drvdata(pdev, usb2);
--- 
-1.8.4.5
-
index c1208294959f51101b2e45b23ea053e4d0c881d5..e3e132cb9ca907bfa3b70cdbc86538779e969bfb 100644 (file)
@@ -50,7 +50,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
        const struct hc_driver  *driver;
        struct xhci_hcd         *xhci;
        struct resource         *res;
-@@ -155,10 +161,6 @@ static int xhci_plat_probe(struct platfo
+@@ -158,10 +164,6 @@ static int xhci_plat_probe(struct platfo
                goto disable_clk;
        }
  
index f6622d5bd00252b8f6c21f9944534bc092a455fe..ee8548f5531fcc9f7e3123f18578be58ef15c0c2 100644 (file)
@@ -55,7 +55,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 
 --- a/net/core/filter.c
 +++ b/net/core/filter.c
-@@ -1293,8 +1293,9 @@ static u64 bpf_skb_store_bytes(u64 r1, u
+@@ -1291,8 +1291,9 @@ static u64 bpf_skb_store_bytes(u64 r1, u
                /* skb_store_bits cannot return -EFAULT here */
                skb_store_bits(skb, offset, ptr, len);
  
@@ -67,7 +67,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        return 0;
  }
  
-@@ -1420,8 +1421,12 @@ static u64 bpf_clone_redirect(u64 r1, u6
+@@ -1415,8 +1416,12 @@ static u64 bpf_clone_redirect(u64 r1, u6
        if (unlikely(!skb2))
                return -ENOMEM;
  
@@ -81,7 +81,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
        skb2->dev = dev;
        skb_sender_cpu_clear(skb2);
-@@ -1464,8 +1469,12 @@ int skb_do_redirect(struct sk_buff *skb)
+@@ -1459,8 +1464,12 @@ int skb_do_redirect(struct sk_buff *skb)
                return -EINVAL;
        }
  
index 9094ec862a98f52a7adcf667bbeed81e52d84d99..ea59f4f1db52589d494601adfebc6d01f4dcade1 100644 (file)
@@ -12,7 +12,7 @@
  static int cfe_env;
 --- a/arch/mips/mm/cache.c
 +++ b/arch/mips/mm/cache.c
-@@ -60,6 +60,7 @@ void (*_dma_cache_wback)(unsigned long s
+@@ -59,6 +59,7 @@ void (*_dma_cache_wback)(unsigned long s
  void (*_dma_cache_inv)(unsigned long start, unsigned long size);
  
  EXPORT_SYMBOL(_dma_cache_wback_inv);
index 7f8720abb0a47134b6f4921425bc3606e5da7e8e..68d37c7506cfc469f9649fd9180dc5d259056a6f 100644 (file)
@@ -15,7 +15,7 @@
        unsigned int check_len;
 --- a/arch/mips/mm/cache.c
 +++ b/arch/mips/mm/cache.c
-@@ -60,6 +60,7 @@ void (*_dma_cache_wback)(unsigned long s
+@@ -59,6 +59,7 @@ void (*_dma_cache_wback)(unsigned long s
  void (*_dma_cache_inv)(unsigned long start, unsigned long size);
  
  EXPORT_SYMBOL(_dma_cache_wback_inv);
index a1e287c6be7022e52354266c91429d07788302a5..b86c98de6cc65d0d36fa057d1a91f90e0bf32032 100644 (file)
@@ -28,8 +28,6 @@ Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
  arch/arc/Makefile | 2 --
  1 file changed, 2 deletions(-)
 
-diff --git a/arch/arc/Makefile b/arch/arc/Makefile
-index aeb1902..209d845 100644
 --- a/arch/arc/Makefile
 +++ b/arch/arc/Makefile
 @@ -48,8 +48,6 @@ endif
@@ -41,6 +39,3 @@ index aeb1902..209d845 100644
  # By default gcc 4.8 generates dwarf4 which kernel unwinder can't grok
  ifeq ($(atleast_gcc48),y)
  cflags-$(CONFIG_ARC_DW2_UNWIND)               += -gdwarf-2
--- 
-2.5.5
-
index bab091262c86d7f66c03ccc7a45738cf19b61424..07fc097f1dfd68dbb4178488bdf94d40174d140b 100644 (file)
@@ -31,7 +31,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  #endif
  unsigned int br_mdb_rehash_seq;
  
-@@ -649,7 +650,8 @@ struct net_bridge_port_group *br_multica
+@@ -652,7 +653,8 @@ struct net_bridge_port_group *br_multica
                        struct net_bridge_port *port,
                        struct br_ip *group,
                        struct net_bridge_port_group __rcu *next,
@@ -41,7 +41,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  {
        struct net_bridge_port_group *p;
  
-@@ -664,12 +666,33 @@ struct net_bridge_port_group *br_multica
+@@ -667,12 +669,33 @@ struct net_bridge_port_group *br_multica
        hlist_add_head(&p->mglist, &port->mglist);
        setup_timer(&p->timer, br_multicast_port_group_expired,
                    (unsigned long)p);
@@ -76,7 +76,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  {
        struct net_bridge_mdb_entry *mp;
        struct net_bridge_port_group *p;
-@@ -696,13 +719,13 @@ static int br_multicast_add_group(struct
+@@ -699,13 +722,13 @@ static int br_multicast_add_group(struct
        for (pp = &mp->ports;
             (p = mlock_dereference(*pp, br)) != NULL;
             pp = &p->next) {
@@ -92,7 +92,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
        if (unlikely(!p))
                goto err;
        rcu_assign_pointer(*pp, p);
-@@ -721,7 +744,7 @@ err:
+@@ -724,7 +747,7 @@ err:
  static int br_ip4_multicast_add_group(struct net_bridge *br,
                                      struct net_bridge_port *port,
                                      __be32 group,
@@ -101,7 +101,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  {
        struct br_ip br_group;
  
-@@ -732,14 +755,14 @@ static int br_ip4_multicast_add_group(st
+@@ -735,14 +758,14 @@ static int br_ip4_multicast_add_group(st
        br_group.proto = htons(ETH_P_IP);
        br_group.vid = vid;
  
@@ -118,7 +118,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  {
        struct br_ip br_group;
  
-@@ -750,7 +773,7 @@ static int br_ip6_multicast_add_group(st
+@@ -753,7 +776,7 @@ static int br_ip6_multicast_add_group(st
        br_group.proto = htons(ETH_P_IPV6);
        br_group.vid = vid;
  
@@ -127,7 +127,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  }
  #endif
  
-@@ -995,6 +1018,7 @@ static int br_ip4_multicast_igmp3_report
+@@ -998,6 +1021,7 @@ static int br_ip4_multicast_igmp3_report
                                         struct sk_buff *skb,
                                         u16 vid)
  {
@@ -135,7 +135,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
        struct igmpv3_report *ih;
        struct igmpv3_grec *grec;
        int i;
-@@ -1035,12 +1059,13 @@ static int br_ip4_multicast_igmp3_report
+@@ -1038,12 +1062,13 @@ static int br_ip4_multicast_igmp3_report
                        continue;
                }
  
@@ -151,7 +151,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
                        if (err)
                                break;
                }
-@@ -1055,6 +1080,7 @@ static int br_ip6_multicast_mld2_report(
+@@ -1058,6 +1083,7 @@ static int br_ip6_multicast_mld2_report(
                                        struct sk_buff *skb,
                                        u16 vid)
  {
@@ -159,7 +159,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
        struct icmp6hdr *icmp6h;
        struct mld2_grec *grec;
        int i;
-@@ -1106,10 +1132,10 @@ static int br_ip6_multicast_mld2_report(
+@@ -1109,10 +1135,10 @@ static int br_ip6_multicast_mld2_report(
                     grec->grec_type == MLD2_MODE_IS_INCLUDE) &&
                    ntohs(*nsrcs) == 0) {
                        br_ip6_multicast_leave_group(br, port, &grec->grec_mca,
@@ -172,7 +172,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
                        if (!err)
                                break;
                }
-@@ -1424,7 +1450,8 @@ br_multicast_leave_group(struct net_brid
+@@ -1427,7 +1453,8 @@ br_multicast_leave_group(struct net_brid
                         struct net_bridge_port *port,
                         struct br_ip *group,
                         struct bridge_mcast_other_query *other_query,
@@ -182,7 +182,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  {
        struct net_bridge_mdb_htable *mdb;
        struct net_bridge_mdb_entry *mp;
-@@ -1448,7 +1475,7 @@ br_multicast_leave_group(struct net_brid
+@@ -1451,7 +1478,7 @@ br_multicast_leave_group(struct net_brid
                for (pp = &mp->ports;
                     (p = mlock_dereference(*pp, br)) != NULL;
                     pp = &p->next) {
@@ -191,7 +191,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
                                continue;
  
                        rcu_assign_pointer(*pp, p->next);
-@@ -1511,7 +1538,7 @@ br_multicast_leave_group(struct net_brid
+@@ -1514,7 +1541,7 @@ br_multicast_leave_group(struct net_brid
        for (p = mlock_dereference(mp->ports, br);
             p != NULL;
             p = mlock_dereference(p->next, br)) {
@@ -200,7 +200,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
                        continue;
  
                if (!hlist_unhashed(&p->mglist) &&
-@@ -1529,8 +1556,8 @@ out:
+@@ -1532,8 +1559,8 @@ out:
  
  static void br_ip4_multicast_leave_group(struct net_bridge *br,
                                         struct net_bridge_port *port,
@@ -211,7 +211,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  {
        struct br_ip br_group;
        struct bridge_mcast_own_query *own_query;
-@@ -1545,14 +1572,14 @@ static void br_ip4_multicast_leave_group
+@@ -1548,14 +1575,14 @@ static void br_ip4_multicast_leave_group
        br_group.vid = vid;
  
        br_multicast_leave_group(br, port, &br_group, &br->ip4_other_query,
@@ -228,7 +228,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  {
        struct br_ip br_group;
        struct bridge_mcast_own_query *own_query;
-@@ -1567,7 +1594,7 @@ static void br_ip6_multicast_leave_group
+@@ -1570,7 +1597,7 @@ static void br_ip6_multicast_leave_group
        br_group.vid = vid;
  
        br_multicast_leave_group(br, port, &br_group, &br->ip6_other_query,
@@ -237,7 +237,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  }
  #endif
  
-@@ -1576,6 +1603,7 @@ static int br_multicast_ipv4_rcv(struct
+@@ -1579,6 +1606,7 @@ static int br_multicast_ipv4_rcv(struct
                                 struct sk_buff *skb,
                                 u16 vid)
  {
@@ -245,7 +245,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
        struct sk_buff *skb_trimmed = NULL;
        struct igmphdr *ih;
        int err;
-@@ -1592,12 +1620,13 @@ static int br_multicast_ipv4_rcv(struct
+@@ -1595,12 +1623,13 @@ static int br_multicast_ipv4_rcv(struct
  
        BR_INPUT_SKB_CB(skb)->igmp = 1;
        ih = igmp_hdr(skb);
@@ -260,7 +260,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
                break;
        case IGMPV3_HOST_MEMBERSHIP_REPORT:
                err = br_ip4_multicast_igmp3_report(br, port, skb_trimmed, vid);
-@@ -1606,7 +1635,7 @@ static int br_multicast_ipv4_rcv(struct
+@@ -1609,7 +1638,7 @@ static int br_multicast_ipv4_rcv(struct
                err = br_ip4_multicast_query(br, port, skb_trimmed, vid);
                break;
        case IGMP_HOST_LEAVE_MESSAGE:
@@ -269,7 +269,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
                break;
        }
  
-@@ -1622,6 +1651,7 @@ static int br_multicast_ipv6_rcv(struct
+@@ -1625,6 +1654,7 @@ static int br_multicast_ipv6_rcv(struct
                                 struct sk_buff *skb,
                                 u16 vid)
  {
@@ -277,7 +277,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
        struct sk_buff *skb_trimmed = NULL;
        struct mld_msg *mld;
        int err;
-@@ -1641,8 +1671,9 @@ static int br_multicast_ipv6_rcv(struct
+@@ -1644,8 +1674,9 @@ static int br_multicast_ipv6_rcv(struct
  
        switch (mld->mld_type) {
        case ICMPV6_MGM_REPORT:
@@ -288,7 +288,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
                break;
        case ICMPV6_MLD2_REPORT:
                err = br_ip6_multicast_mld2_report(br, port, skb_trimmed, vid);
-@@ -1651,7 +1682,8 @@ static int br_multicast_ipv6_rcv(struct
+@@ -1654,7 +1685,8 @@ static int br_multicast_ipv6_rcv(struct
                err = br_ip6_multicast_query(br, port, skb_trimmed, vid);
                break;
        case ICMPV6_MGM_REDUCTION:
@@ -310,7 +310,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  };
  
  struct net_bridge_mdb_entry
-@@ -554,7 +556,8 @@ void br_multicast_free_pg(struct rcu_hea
+@@ -555,7 +557,8 @@ void br_multicast_free_pg(struct rcu_hea
  struct net_bridge_port_group *
  br_multicast_new_port_group(struct net_bridge_port *port, struct br_ip *group,
                            struct net_bridge_port_group __rcu *next,
diff --git a/target/linux/generic/patches-4.4/646-bridge_fix_ipv6_mc_snooping_if_bridge_has_no_ipv6_address.patch b/target/linux/generic/patches-4.4/646-bridge_fix_ipv6_mc_snooping_if_bridge_has_no_ipv6_address.patch
deleted file mode 100644 (file)
index 4388cda..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-From: daniel <daniel@dd-wrt.com>
-Date: Fri, 24 Jun 2016 12:35:18 +0200
-Subject: [PATCH] Bridge: Fix ipv6 mc snooping if bridge has no ipv6 address
-
-The bridge is falsly dropping ipv6 mulitcast packets if there is:
- 1. No ipv6 address assigned on the brigde.
- 2. No external mld querier present.
- 3. The internal querier enabled.
-
-When the bridge fails to build mld queries, because it has no
-ipv6 address, it slilently returns, but keeps the local querier enabled.
-This specific case causes confusing packet loss.
-
-Ipv6 multicast snooping can only work if:
- a) An external querier is present
- OR
- b) The bridge has an ipv6 address an is capable of sending own queries
-
-Otherwise it has to forward/flood the ipv6 multicast traffic,
-because snooping cannot work.
-
-This patch fixes the issue by adding a flag to the bridge struct that
-indicates that there is currently no ipv6 address assinged to the bridge
-and returns a false state for the local querier in
-__br_multicast_querier_exists().
-
-Special thanks to Linus Lüssing.
-
-Fixes: d1d81d4c3dd8 ("bridge: check return value of ipv6_dev_get_saddr()")
-Signed-off-by: Daniel Danzberger <daniel@dd-wrt.com>
-Acked-by: Linus Lüssing <linus.luessing@c0d3.blue>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- net/bridge/br_multicast.c |  4 ++++
- net/bridge/br_private.h   | 23 +++++++++++++++++++----
- 2 files changed, 23 insertions(+), 4 deletions(-)
-
-diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
-index c8c2a8a..d063a10 100644
---- a/net/bridge/br_multicast.c
-+++ b/net/bridge/br_multicast.c
-@@ -465,8 +465,11 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge *br,
-       if (ipv6_dev_get_saddr(dev_net(br->dev), br->dev, &ip6h->daddr, 0,
-                              &ip6h->saddr)) {
-               kfree_skb(skb);
-+              br->has_ipv6_addr = 0;
-               return NULL;
-       }
-+
-+      br->has_ipv6_addr = 1;
-       ipv6_eth_mc_map(&ip6h->daddr, eth->h_dest);
-       hopopt = (u8 *)(ip6h + 1);
-@@ -1768,6 +1771,7 @@ void br_multicast_init(struct net_bridge *br)
-       br->ip6_other_query.delay_time = 0;
-       br->ip6_querier.port = NULL;
- #endif
-+      br->has_ipv6_addr = 1;
-       spin_lock_init(&br->multicast_lock);
-       setup_timer(&br->multicast_router_timer,
-diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
-index e24abfd..3dd7e2c 100644
---- a/net/bridge/br_private.h
-+++ b/net/bridge/br_private.h
-@@ -303,6 +303,7 @@ struct net_bridge
-       u8                              multicast_disabled:1;
-       u8                              multicast_querier:1;
-       u8                              multicast_query_use_ifaddr:1;
-+      u8                              has_ipv6_addr:1;
-       u32                             hash_elasticity;
-       u32                             hash_max;
-@@ -577,10 +578,22 @@ static inline bool br_multicast_is_router(struct net_bridge *br)
- static inline bool
- __br_multicast_querier_exists(struct net_bridge *br,
--                            struct bridge_mcast_other_query *querier)
-+                              struct bridge_mcast_other_query *querier,
-+                              const bool is_ipv6)
- {
-+      bool own_querier_enabled;
-+
-+      if (br->multicast_querier) {
-+              if (is_ipv6 && !br->has_ipv6_addr)
-+                      own_querier_enabled = false;
-+              else
-+                      own_querier_enabled = true;
-+      } else {
-+              own_querier_enabled = false;
-+      }
-+
-       return time_is_before_jiffies(querier->delay_time) &&
--             (br->multicast_querier || timer_pending(&querier->timer));
-+             (own_querier_enabled || timer_pending(&querier->timer));
- }
- static inline bool br_multicast_querier_exists(struct net_bridge *br,
-@@ -588,10 +601,12 @@ static inline bool br_multicast_querier_exists(struct net_bridge *br,
- {
-       switch (eth->h_proto) {
-       case (htons(ETH_P_IP)):
--              return __br_multicast_querier_exists(br, &br->ip4_other_query);
-+              return __br_multicast_querier_exists(br,
-+                      &br->ip4_other_query, false);
- #if IS_ENABLED(CONFIG_IPV6)
-       case (htons(ETH_P_IPV6)):
--              return __br_multicast_querier_exists(br, &br->ip6_other_query);
-+              return __br_multicast_querier_exists(br,
-+                      &br->ip6_other_query, true);
- #endif
-       default:
-               return false;
index 0aae481a204def26b67d99342be53b749a806f27..c7aeb49e2490f76ed764054324aee2fa7135f629 100644 (file)
@@ -52,11 +52,9 @@ Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
  drivers/usb/core/urb.c | 5 -----
  1 file changed, 5 deletions(-)
 
-diff --git a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c
-index 3d27477..a317e1e 100644
 --- a/drivers/usb/core/urb.c
 +++ b/drivers/usb/core/urb.c
-@@ -443,11 +443,6 @@ int usb_submit_urb(struct urb *urb, gfp_t mem_flags)
+@@ -443,11 +443,6 @@ int usb_submit_urb(struct urb *urb, gfp_
         * cause problems in HCDs if they get it wrong.
         */
  
@@ -68,6 +66,3 @@ index 3d27477..a317e1e 100644
        /* Check against a simple/standard policy */
        allowed = (URB_NO_TRANSFER_DMA_MAP | URB_NO_INTERRUPT | URB_DIR_MASK |
                        URB_FREE_BUFFER);
--- 
-2.5.5
-
index a179900313e28a469d8a29d5d13920be8a06e529..2b1cf9627b526210711f69d0cdc8d417b9ab4383 100644 (file)
@@ -94,7 +94,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
  #include <linux/delay.h>
  #include <linux/interrupt.h>
  #include <linux/ip.h>
-@@ -2223,6 +2224,126 @@ static s32 igb_init_i2c(struct igb_adapt
+@@ -2217,6 +2218,126 @@ static s32 igb_init_i2c(struct igb_adapt
        return status;
  }
  
@@ -221,7 +221,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
  /**
   *  igb_probe - Device Initialization Routine
   *  @pdev: PCI device information struct
-@@ -2645,6 +2766,13 @@ static int igb_probe(struct pci_dev *pde
+@@ -2639,6 +2760,13 @@ static int igb_probe(struct pci_dev *pde
                }
        }
        pm_runtime_put_noidle(&pdev->dev);
@@ -235,7 +235,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
        return 0;
  
  err_register:
-@@ -2792,6 +2920,10 @@ static void igb_remove(struct pci_dev *p
+@@ -2786,6 +2914,10 @@ static void igb_remove(struct pci_dev *p
        struct e1000_hw *hw = &adapter->hw;
  
        pm_runtime_get_noresume(&pdev->dev);
@@ -246,7 +246,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
  #ifdef CONFIG_IGB_HWMON
        igb_sysfs_exit(adapter);
  #endif
-@@ -3108,6 +3240,12 @@ static int __igb_open(struct net_device
+@@ -3102,6 +3234,12 @@ static int __igb_open(struct net_device
        if (!resuming)
                pm_runtime_put(&pdev->dev);
  
@@ -259,7 +259,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
        /* start the watchdog. */
        hw->mac.get_link_status = 1;
        schedule_work(&adapter->watchdog_task);
-@@ -7099,21 +7237,41 @@ void igb_alloc_rx_buffers(struct igb_rin
+@@ -7093,21 +7231,41 @@ void igb_alloc_rx_buffers(struct igb_rin
  static int igb_mii_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
  {
        struct igb_adapter *adapter = netdev_priv(netdev);
index f344be6fdd31753abff5982d35d9eaef6be8442a..1c4816f1212ea368991566880909e501171a8c46 100644 (file)
@@ -1428,7 +1428,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
  
  /*
   * Returns zero if the TRB isn't in this segment, otherwise it returns the DMA
-@@ -3065,17 +3066,22 @@ static u32 xhci_td_remainder(struct xhci
+@@ -3083,17 +3084,22 @@ static u32 xhci_td_remainder(struct xhci
  {
        u32 maxp, total_packet_count;
  
@@ -1455,7 +1455,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
        /* Queueing functions don't count the current TRB into transferred */
        return (total_packet_count - ((transferred + trb_buff_len) / maxp));
  }
-@@ -3463,7 +3469,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
+@@ -3481,7 +3487,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
                field |= 0x1;
  
        /* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */
@@ -1487,7 +1487,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
        writel(temp, &xhci->ir_set->irq_control);
  
        /* Set the HCD state before we enable the irqs */
-@@ -1701,6 +1706,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
+@@ -1704,6 +1709,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
  
        xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
  
@@ -1497,7 +1497,7 @@ Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
        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,
-@@ -1796,6 +1804,15 @@ int xhci_add_endpoint(struct usb_hcd *hc
+@@ -1799,6 +1807,15 @@ int xhci_add_endpoint(struct usb_hcd *hc
                return -ENOMEM;
        }
  
index 4107d49ce690251a7ef38d5655c247ce3476f655..1cac9a22bc0213f1376b251ef2e272294e3feb0d 100644 (file)
@@ -1420,7 +1420,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  
  /*
   * Returns zero if the TRB isn't in this segment, otherwise it returns the DMA
-@@ -3065,17 +3066,22 @@ static u32 xhci_td_remainder(struct xhci
+@@ -3083,17 +3084,22 @@ static u32 xhci_td_remainder(struct xhci
  {
        u32 maxp, total_packet_count;
  
@@ -1447,7 +1447,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
        /* Queueing functions don't count the current TRB into transferred */
        return (total_packet_count - ((transferred + trb_buff_len) / maxp));
  }
-@@ -3463,7 +3469,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
+@@ -3481,7 +3487,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
                field |= 0x1;
  
        /* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */
@@ -1479,7 +1479,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
        writel(temp, &xhci->ir_set->irq_control);
  
        /* Set the HCD state before we enable the irqs */
-@@ -1701,6 +1706,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
+@@ -1704,6 +1709,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
  
        xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
  
@@ -1489,7 +1489,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
        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,
-@@ -1796,6 +1804,15 @@ int xhci_add_endpoint(struct usb_hcd *hc
+@@ -1799,6 +1807,15 @@ int xhci_add_endpoint(struct usb_hcd *hc
                return -ENOMEM;
        }
  
index 4acbc3311f4fd537d6877494fcf9f029f45b171a..e2f1d600512f3db42bd93018ace944d7d932cb23 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ralink/mt7620.c
 +++ b/arch/mips/ralink/mt7620.c
-@@ -176,7 +176,7 @@
+@@ -176,7 +176,7 @@ static struct rt2880_pmx_func spi_cs1_gr
  
  static struct rt2880_pmx_func spis_grp_mt7628[] = {
        FUNC("pwm", 3, 14, 4),
@@ -9,7 +9,7 @@
        FUNC("gpio", 1, 14, 4),
        FUNC("spis", 0, 14, 4),
  };
-@@ -190,28 +190,28 @@
+@@ -190,28 +190,28 @@ static struct rt2880_pmx_func gpio_grp_m
  
  static struct rt2880_pmx_func p4led_kn_grp_mt7628[] = {
        FUNC("jtag", 3, 30, 1),
@@ -42,7 +42,7 @@
        FUNC("gpio", 1, 33, 1),
        FUNC("p1led_kn", 0, 33, 1),
  };
-@@ -232,28 +232,28 @@
+@@ -232,28 +232,28 @@ static struct rt2880_pmx_func wled_kn_gr
  
  static struct rt2880_pmx_func p4led_an_grp_mt7628[] = {
        FUNC("jtag", 3, 39, 1),
index 46b1a6c04cf56c655df3c3b0b40b0c186229c054..8bb0352ac2dee1b9f3db5a3670f86e388bb94162 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/mmc/host/mtk-mmc/sd.c
 +++ b/drivers/mmc/host/mtk-mmc/sd.c
-@@ -195,7 +195,7 @@
+@@ -195,7 +195,7 @@ struct msdc_hw msdc0_hw = {
        .dat_drv        = 4,
        .data_pins      = 4,
        .data_offset    = 0,
@@ -9,7 +9,7 @@
  //    .flags          = MSDC_SYS_SUSPEND | MSDC_WP_PIN_EN | MSDC_CD_PIN_EN | MSDC_REMOVABLE,
  };
  
-@@ -2746,6 +2746,9 @@
+@@ -2746,6 +2746,9 @@ static int msdc_drv_probe(struct platfor
      int ret, irq;
   
      pdev->dev.platform_data = &msdc0_hw;
index 0ffe82545e40418375425ad03f6c7dc7c19def55..9896ebb1d22b83544317fd9eb1fc33512efaa0ca 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ralink/mt7621.c
 +++ b/arch/mips/ralink/mt7621.c
-@@ -180,7 +180,7 @@
+@@ -180,7 +180,7 @@ void prom_soc_init(struct ralink_soc_inf
        } else {
                panic("mt7621: unknown SoC, n0:%08x n1:%08x\n", n0, n1);
        }
index c5e73d5ca8338248d47ad79a42f8dcb58ba43d89..67e9060ea0e9b5c0c57029b74a9092506fe2c97b 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/ethernet/mediatek/mt7530.c
 +++ b/drivers/net/ethernet/mediatek/mt7530.c
-@@ -539,6 +539,7 @@
+@@ -539,6 +539,7 @@ mt7530_apply_config(struct switch_dev *d
                u8 etags = priv->vlan_entries[i].etags;
                u32 val;
  
@@ -8,7 +8,7 @@
                /* vid of vlan */
                val = mt7530_r32(priv, REG_ESW_VLAN_VTIM(i));
                if (i % 2 == 0) {
-@@ -549,7 +550,7 @@
+@@ -549,7 +550,7 @@ mt7530_apply_config(struct switch_dev *d
                        val |= (vid << 12);
                }
                mt7530_w32(priv, REG_ESW_VLAN_VTIM(i), val);
@@ -17,7 +17,7 @@
                /* vlan port membership */
                if (member)
                        mt7530_w32(priv, REG_ESW_VLAN_VAWD1, REG_ESW_VLAN_VAWD1_IVL_MAC |
-@@ -569,7 +570,11 @@
+@@ -569,7 +570,11 @@ mt7530_apply_config(struct switch_dev *d
                mt7530_w32(priv, REG_ESW_VLAN_VAWD2, val);
  
                /* write to vlan table */
index 9d4cd3f4c1b3eb5636440f15dcdd8536478d84fb..ae5fa16d666e21c493444bc53ffe4d0060eed4fd 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/ethernet/mediatek/esw_rt3050.c
 +++ b/drivers/net/ethernet/mediatek/esw_rt3050.c
-@@ -221,6 +221,8 @@
+@@ -221,6 +221,8 @@ struct rt305x_esw {
  
        unsigned char           port_map;
        unsigned char           port_disable;
@@ -9,7 +9,7 @@
        unsigned int            reg_led_polarity;
  
        struct switch_dev       swdev;
-@@ -452,7 +454,10 @@
+@@ -452,7 +454,10 @@ static void esw_hw_init(struct rt305x_es
                      (RT305X_ESW_PORTS_NOCPU << RT305X_ESW_POC2_UNTAG_EN_S)),
                RT305X_ESW_REG_POC2);
  
@@ -21,7 +21,7 @@
  
        /* 300s aging timer, max packet len 1536, broadcast storm prevention
         * disabled, disable collision abort, mac xor48 hash, 10 packet back
-@@ -475,7 +480,10 @@
+@@ -475,7 +480,10 @@ static void esw_hw_init(struct rt305x_es
         * port5: disabled
         * port6: enabled, gige, full-duplex, rx/tx-flow-control
         */
@@ -33,7 +33,7 @@
        esw_w32(esw, 0x00000000, RT305X_ESW_REG_FPA);
  
        /* Force Link/Activity on ports */
-@@ -1361,6 +1369,14 @@
+@@ -1361,6 +1369,14 @@ static int esw_probe(struct platform_dev
        if (port_disable)
                esw->port_disable = be32_to_cpu(*port_disable);
  
@@ -48,7 +48,7 @@
        reg_init = of_get_property(np, "mediatek,led_polarity", NULL);
        if (reg_init)
                esw->reg_led_polarity = be32_to_cpu(*reg_init);
-@@ -1386,6 +1402,18 @@
+@@ -1386,6 +1402,18 @@ static int esw_probe(struct platform_dev
  
        esw_hw_init(esw);
  
index 500625b4e5a556d7518bdc5084fceb8c0d69a9a8..e9e72ad11a1098527506639f6a04695561c38fdf 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ralink/mt7620.c
 +++ b/arch/mips/ralink/mt7620.c
-@@ -509,6 +509,7 @@ void __init ralink_clk_init(void)
+@@ -513,6 +513,7 @@ void __init ralink_clk_init(void)
        unsigned long sys_rate;
        unsigned long dram_rate;
        unsigned long periph_rate;
@@ -8,7 +8,7 @@
  
        xtal_rate = mt7620_get_xtal_rate();
  
-@@ -523,6 +524,7 @@ void __init ralink_clk_init(void)
+@@ -527,6 +528,7 @@ void __init ralink_clk_init(void)
                        cpu_rate = MHZ(575);
                dram_rate = sys_rate = cpu_rate / 3;
                periph_rate = MHZ(40);
@@ -16,7 +16,7 @@
  
                ralink_clk_add("10000d00.uartlite", periph_rate);
                ralink_clk_add("10000e00.uartlite", periph_rate);
-@@ -534,6 +536,7 @@ void __init ralink_clk_init(void)
+@@ -538,6 +540,7 @@ void __init ralink_clk_init(void)
                dram_rate = mt7620_get_dram_rate(pll_rate);
                sys_rate = mt7620_get_sys_rate(cpu_rate);
                periph_rate = mt7620_get_periph_rate(xtal_rate);
@@ -24,7 +24,7 @@
  
                pr_debug(RFMT("XTAL") RFMT("CPU_PLL") RFMT("PLL"),
                         RINT(xtal_rate), RFRAC(xtal_rate),
-@@ -555,6 +558,8 @@ void __init ralink_clk_init(void)
+@@ -559,6 +562,8 @@ void __init ralink_clk_init(void)
        ralink_clk_add("cpu", cpu_rate);
        ralink_clk_add("10000100.timer", periph_rate);
        ralink_clk_add("10000120.watchdog", periph_rate);