summaryrefslogtreecommitdiff
path: root/target/linux/generic/patches-4.4
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2016-07-13 12:07:08 +0200
committerHauke Mehrtens <hauke@hauke-m.de>2016-07-13 15:39:15 +0200
commitefa1960abb390d696704d029507dff671cc271fd (patch)
treefa9fb6267c4357fe51051dd5545ba2ce81b3e1b8 /target/linux/generic/patches-4.4
parentd6b3b44d9798dfd6aba3758843acbf310b98a853 (diff)
downloadmtk-20170518-efa1960abb390d696704d029507dff671cc271fd.zip
mtk-20170518-efa1960abb390d696704d029507dff671cc271fd.tar.gz
mtk-20170518-efa1960abb390d696704d029507dff671cc271fd.tar.bz2
kernel: update kernel 4.4 to version 4.4.15
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Diffstat (limited to 'target/linux/generic/patches-4.4')
-rw-r--r--target/linux/generic/patches-4.4/095-ARC-unwind-ensure-that-.debug_frame-is-generated-vs..patch5
-rw-r--r--target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch46
-rw-r--r--target/linux/generic/patches-4.4/646-bridge_fix_ipv6_mc_snooping_if_bridge_has_no_ipv6_address.patch113
-rw-r--r--target/linux/generic/patches-4.4/821-usb-Remove-annoying-warning-about-bogus-URB.patch7
4 files changed, 24 insertions, 147 deletions
diff --git a/target/linux/generic/patches-4.4/095-ARC-unwind-ensure-that-.debug_frame-is-generated-vs..patch b/target/linux/generic/patches-4.4/095-ARC-unwind-ensure-that-.debug_frame-is-generated-vs..patch
index a1e287c..b86c98d 100644
--- a/target/linux/generic/patches-4.4/095-ARC-unwind-ensure-that-.debug_frame-is-generated-vs..patch
+++ b/target/linux/generic/patches-4.4/095-ARC-unwind-ensure-that-.debug_frame-is-generated-vs..patch
@@ -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
-
diff --git a/target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch b/target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch
index bab0912..07fc097 100644
--- a/target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch
+++ b/target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch
@@ -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
index 4388cda..0000000
--- a/target/linux/generic/patches-4.4/646-bridge_fix_ipv6_mc_snooping_if_bridge_has_no_ipv6_address.patch
+++ /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;
diff --git a/target/linux/generic/patches-4.4/821-usb-Remove-annoying-warning-about-bogus-URB.patch b/target/linux/generic/patches-4.4/821-usb-Remove-annoying-warning-about-bogus-URB.patch
index 0aae481..c7aeb49 100644
--- a/target/linux/generic/patches-4.4/821-usb-Remove-annoying-warning-about-bogus-URB.patch
+++ b/target/linux/generic/patches-4.4/821-usb-Remove-annoying-warning-about-bogus-URB.patch
@@ -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
-