if (err)
break;
}
-@@ -1465,7 +1502,8 @@ br_multicast_leave_group(struct net_brid
+@@ -1458,7 +1495,8 @@ br_multicast_leave_group(struct net_brid
struct net_bridge_port *port,
struct br_ip *group,
struct bridge_mcast_other_query *other_query,
{
struct net_bridge_mdb_htable *mdb;
struct net_bridge_mdb_entry *mp;
-@@ -1489,7 +1527,7 @@ br_multicast_leave_group(struct net_brid
+@@ -1482,7 +1520,7 @@ br_multicast_leave_group(struct net_brid
for (pp = &mp->ports;
(p = mlock_dereference(*pp, br)) != NULL;
pp = &p->next) {
continue;
rcu_assign_pointer(*pp, p->next);
-@@ -1520,7 +1558,7 @@ br_multicast_leave_group(struct net_brid
+@@ -1513,7 +1551,7 @@ br_multicast_leave_group(struct net_brid
for (p = mlock_dereference(mp->ports, br);
p != NULL;
p = mlock_dereference(p->next, br)) {
continue;
if (!hlist_unhashed(&p->mglist) &&
-@@ -1571,7 +1609,8 @@ out:
+@@ -1564,7 +1602,8 @@ out:
static void br_ip4_multicast_leave_group(struct net_bridge *br,
struct net_bridge_port *port,
__be32 group,
{
struct br_ip br_group;
struct bridge_mcast_own_query *own_query;
-@@ -1586,14 +1625,15 @@ static void br_ip4_multicast_leave_group
+@@ -1579,14 +1618,15 @@ static void br_ip4_multicast_leave_group
br_group.vid = vid;
br_multicast_leave_group(br, port, &br_group, &br->ip4_other_query,
{
struct br_ip br_group;
struct bridge_mcast_own_query *own_query;
-@@ -1608,7 +1648,7 @@ static void br_ip6_multicast_leave_group
+@@ -1601,7 +1641,7 @@ static void br_ip6_multicast_leave_group
br_group.vid = vid;
br_multicast_leave_group(br, port, &br_group, &br->ip6_other_query,
}
#endif
-@@ -1651,6 +1691,7 @@ static int br_multicast_ipv4_rcv(struct
+@@ -1644,6 +1684,7 @@ static int br_multicast_ipv4_rcv(struct
u16 vid)
{
struct sk_buff *skb_trimmed = NULL;
struct igmphdr *ih;
int err;
-@@ -1666,13 +1707,14 @@ static int br_multicast_ipv4_rcv(struct
+@@ -1659,13 +1700,14 @@ static int br_multicast_ipv4_rcv(struct
}
ih = igmp_hdr(skb);
break;
case IGMPV3_HOST_MEMBERSHIP_REPORT:
err = br_ip4_multicast_igmp3_report(br, port, skb_trimmed, vid);
-@@ -1681,7 +1723,7 @@ static int br_multicast_ipv4_rcv(struct
+@@ -1674,7 +1716,7 @@ static int br_multicast_ipv4_rcv(struct
err = br_ip4_multicast_query(br, port, skb_trimmed, vid);
break;
case IGMP_HOST_LEAVE_MESSAGE:
break;
}
-@@ -1701,6 +1743,7 @@ static int br_multicast_ipv6_rcv(struct
+@@ -1694,6 +1736,7 @@ static int br_multicast_ipv6_rcv(struct
u16 vid)
{
struct sk_buff *skb_trimmed = NULL;
struct mld_msg *mld;
int err;
-@@ -1720,8 +1763,10 @@ static int br_multicast_ipv6_rcv(struct
+@@ -1713,8 +1756,10 @@ static int br_multicast_ipv6_rcv(struct
switch (mld->mld_type) {
case ICMPV6_MGM_REPORT:
break;
case ICMPV6_MLD2_REPORT:
err = br_ip6_multicast_mld2_report(br, port, skb_trimmed, vid);
-@@ -1730,7 +1775,8 @@ static int br_multicast_ipv6_rcv(struct
+@@ -1723,7 +1768,8 @@ static int br_multicast_ipv6_rcv(struct
err = br_ip6_multicast_query(br, port, skb_trimmed, vid);
break;
case ICMPV6_MGM_REDUCTION:
--- a/Makefile
+++ b/Makefile
-@@ -406,6 +406,11 @@ KBUILD_CFLAGS_MODULE := -DMODULE
+@@ -401,6 +401,11 @@ KBUILD_CFLAGS_MODULE := -DMODULE
KBUILD_LDFLAGS_MODULE = -T $(srctree)/scripts/module-common.lds $(if $(CONFIG_PROFILING),,-s)
GCC_PLUGINS_CFLAGS :=
# Read KERNELRELEASE from include/config/kernel.release (if it exists)
KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
-@@ -673,11 +678,6 @@ KBUILD_CFLAGS += $(call cc-disable-warni
+@@ -649,11 +654,6 @@ KBUILD_CFLAGS += $(call cc-disable-warni
KBUILD_CFLAGS += $(call cc-disable-warning, int-in-bool-context)
KBUILD_CFLAGS += $(call cc-disable-warning, attribute-alias)
--- a/arch/arc/kernel/head.S
+++ b/arch/arc/kernel/head.S
-@@ -49,6 +49,16 @@
- 1:
+@@ -59,6 +59,16 @@
+ #endif
.endm
+; Here "patch-dtb" will embed external .dtb
;----------------------------------------------------------------
--- a/arch/arc/kernel/setup.c
+++ b/arch/arc/kernel/setup.c
-@@ -388,6 +388,8 @@ static inline int is_kernel(unsigned lon
- return 0;
- }
-
-+extern struct boot_param_header __image_dtb;
-+
- void __init setup_arch(char **cmdline_p)
- {
- #ifdef CONFIG_ARC_UBOOT_SUPPORT
-@@ -401,7 +403,7 @@ void __init setup_arch(char **cmdline_p)
+@@ -436,7 +436,7 @@ ignore_uboot_args:
#endif
- {
- /* No, so try the embedded one */
+
+ if (use_embedded_dtb) {
- machine_desc = setup_machine_fdt(__dtb_start);
+ machine_desc = setup_machine_fdt(&__image_dtb);
if (!machine_desc)
panic("Embedded DT invalid\n");
+ }
+@@ -452,6 +452,8 @@ ignore_uboot_args:
+ }
+ }
++extern struct boot_param_header __image_dtb;
++
+ void __init setup_arch(char **cmdline_p)
+ {
+ handle_uboot_args();
--- a/arch/arc/kernel/vmlinux.lds.S
+++ b/arch/arc/kernel/vmlinux.lds.S
@@ -30,6 +30,19 @@ SECTIONS