Refreshed all patches.
Altered patches:
- 021-bridge-multicast-to-unicast.patch
Compile-tested on: none
Runtime-tested on: none
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
-LINUX_VERSION-4.9 = .186
+LINUX_VERSION-4.9 = .187
LINUX_VERSION-4.14 = .134
LINUX_VERSION-4.19 = .62
-LINUX_KERNEL_HASH-4.9.186 = 242484430d0729791d8efd92181b7d34b4021050646c6e00cf459866eab94b6a
+LINUX_KERNEL_HASH-4.9.187 = 014bcd042cd25e073539c17bd34c616a936b19787a9c6a4c35d36a4f28afd1c7
LINUX_KERNEL_HASH-4.14.134 = 0b21e7b5effd92303a551b5be2380c9703d6fb87cfe5189fe0d795cc73903d2d
LINUX_KERNEL_HASH-4.19.62 = 07be647189ced7eb8ba5ee769906e67919975772184842cc517f609df50cdadc
+
--- a/include/linux/compiler.h
+++ b/include/linux/compiler.h
-@@ -583,4 +583,23 @@ static __always_inline void __write_once
+@@ -589,4 +589,23 @@ unsigned long read_word_at_a_time(const
# define __kprobes
# define nokprobe_inline inline
#endif
struct igmpv3_report *ih;
struct igmpv3_grec *grec;
int i;
-@@ -1068,12 +1101,14 @@ static int br_ip4_multicast_igmp3_report
+@@ -1070,12 +1103,14 @@ static int br_ip4_multicast_igmp3_report
continue;
}
+ src = eth_hdr(skb)->h_source;
if ((type == IGMPV3_CHANGE_TO_INCLUDE ||
type == IGMPV3_MODE_IS_INCLUDE) &&
- ntohs(grec->grec_nsrcs) == 0) {
+ nsrcs == 0) {
- br_ip4_multicast_leave_group(br, port, group, vid);
+ br_ip4_multicast_leave_group(br, port, group, vid, src);
} else {
if (err)
break;
}
-@@ -1088,6 +1123,7 @@ static int br_ip6_multicast_mld2_report(
+@@ -1090,6 +1125,7 @@ static int br_ip6_multicast_mld2_report(
struct sk_buff *skb,
u16 vid)
{
struct icmp6hdr *icmp6h;
struct mld2_grec *grec;
int i;
-@@ -1139,10 +1175,11 @@ static int br_ip6_multicast_mld2_report(
+@@ -1144,10 +1180,11 @@ static int br_ip6_multicast_mld2_report(
grec->grec_type == MLD2_MODE_IS_INCLUDE) &&
- ntohs(*nsrcs) == 0) {
+ nsrcs == 0) {
br_ip6_multicast_leave_group(br, port, &grec->grec_mca,
- vid);
+ vid, src);
if (err)
break;
}
-@@ -1458,7 +1495,8 @@ br_multicast_leave_group(struct net_brid
+@@ -1462,7 +1499,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;
-@@ -1482,7 +1520,7 @@ br_multicast_leave_group(struct net_brid
+@@ -1486,7 +1524,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);
-@@ -1513,7 +1551,7 @@ br_multicast_leave_group(struct net_brid
+@@ -1517,7 +1555,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) &&
-@@ -1564,7 +1602,8 @@ out:
+@@ -1568,7 +1606,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;
-@@ -1579,14 +1618,15 @@ static void br_ip4_multicast_leave_group
+@@ -1583,14 +1622,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;
-@@ -1601,7 +1641,7 @@ static void br_ip6_multicast_leave_group
+@@ -1605,7 +1645,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
-@@ -1644,6 +1684,7 @@ static int br_multicast_ipv4_rcv(struct
+@@ -1648,6 +1688,7 @@ static int br_multicast_ipv4_rcv(struct
u16 vid)
{
struct sk_buff *skb_trimmed = NULL;
struct igmphdr *ih;
int err;
-@@ -1659,13 +1700,14 @@ static int br_multicast_ipv4_rcv(struct
+@@ -1663,13 +1704,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);
-@@ -1674,7 +1716,7 @@ static int br_multicast_ipv4_rcv(struct
+@@ -1678,7 +1720,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;
}
-@@ -1694,6 +1736,7 @@ static int br_multicast_ipv6_rcv(struct
+@@ -1698,6 +1740,7 @@ static int br_multicast_ipv6_rcv(struct
u16 vid)
{
struct sk_buff *skb_trimmed = NULL;
struct mld_msg *mld;
int err;
-@@ -1713,8 +1756,10 @@ static int br_multicast_ipv6_rcv(struct
+@@ -1717,8 +1760,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);
-@@ -1723,7 +1768,8 @@ static int br_multicast_ipv6_rcv(struct
+@@ -1727,7 +1772,8 @@ static int br_multicast_ipv6_rcv(struct
err = br_ip6_multicast_query(br, port, skb_trimmed, vid);
break;
case ICMPV6_MGM_REDUCTION:
BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID |
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
-@@ -3236,7 +3236,7 @@ static int bnx2x_poll(struct napi_struct
+@@ -3239,7 +3239,7 @@ static int bnx2x_poll(struct napi_struct
* has been updated when NAPI was scheduled.
*/
if (IS_FCOE_FP(fp)) {
#define INADDR_ANY ((unsigned long int) 0x00000000)
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
-@@ -898,7 +898,7 @@ static int inet_abc_len(__be32 addr)
+@@ -906,7 +906,7 @@ static int inet_abc_len(__be32 addr)
{
int rc = -1; /* Something else, probably a multicast. */
rc = 0;
else {
__u32 haddr = ntohl(addr);
-@@ -909,6 +909,8 @@ static int inet_abc_len(__be32 addr)
+@@ -917,6 +917,8 @@ static int inet_abc_len(__be32 addr)
rc = 16;
else if (IN_CLASSC(haddr))
rc = 24;
--- a/Makefile
+++ b/Makefile
-@@ -1226,7 +1226,6 @@ all: modules
+@@ -1227,7 +1227,6 @@ all: modules
PHONY += modules
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
@$(kecho) ' Building modules, stage 2.';
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild
-@@ -1256,7 +1255,6 @@ _modinst_:
+@@ -1257,7 +1256,6 @@ _modinst_:
rm -f $(MODLIB)/build ; \
ln -s $(CURDIR) $(MODLIB)/build ; \
fi
# 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)
-@@ -650,11 +655,6 @@ KBUILD_CFLAGS += $(call cc-disable-warni
+@@ -651,11 +656,6 @@ KBUILD_CFLAGS += $(call cc-disable-warni
KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
KBUILD_CFLAGS += $(call cc-disable-warning, attribute-alias)
#include <linux/mutex.h>
#include <linux/err.h>
#include <linux/of.h>
-@@ -2913,3 +2914,5 @@ static int __init regmap_initcall(void)
+@@ -2915,3 +2916,5 @@ static int __init regmap_initcall(void)
return 0;
}
postcore_initcall(regmap_initcall);
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1309,6 +1309,9 @@ int genphy_update_link(struct phy_device
+@@ -1315,6 +1315,9 @@ int genphy_update_link(struct phy_device
{
int status;
if (!root_irq_dir)
--- a/kernel/time/timer_list.c
+++ b/kernel/time/timer_list.c
-@@ -399,6 +399,9 @@ static int __init init_timer_list_procfs
+@@ -400,6 +400,9 @@ static int __init init_timer_list_procfs
{
struct proc_dir_entry *pe;
--- a/Makefile
+++ b/Makefile
-@@ -656,12 +656,12 @@ KBUILD_CFLAGS += $(call cc-option,-fdata
+@@ -657,12 +657,12 @@ KBUILD_CFLAGS += $(call cc-option,-fdata
endif
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
static int absolute_percpu = 0;
static char symbol_prefix_char = '\0';
static int base_relative = 0;
-@@ -446,6 +447,9 @@ static void write_src(void)
+@@ -449,6 +450,9 @@ static void write_src(void)
free(markers);
output_label("kallsyms_token_table");
off = 0;
for (i = 0; i < 256; i++) {
-@@ -504,6 +508,9 @@ static void *find_token(unsigned char *s
+@@ -507,6 +511,9 @@ static void *find_token(unsigned char *s
{
int i;
for (i = 0; i < len - 1; i++) {
if (str[i] == token[0] && str[i+1] == token[1])
return &str[i];
-@@ -576,6 +583,9 @@ static void optimize_result(void)
+@@ -579,6 +586,9 @@ static void optimize_result(void)
{
int i, best;
/* using the '\0' symbol last allows compress_symbols to use standard
* fast string functions */
for (i = 255; i >= 0; i--) {
-@@ -764,6 +774,8 @@ int main(int argc, char **argv)
+@@ -767,6 +777,8 @@ int main(int argc, char **argv)
symbol_prefix_char = *p;
} else if (strcmp(argv[i], "--base-relative") == 0)
base_relative = 1;
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -998,6 +998,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1004,6 +1004,9 @@ void phy_detach(struct phy_device *phyde
struct mii_bus *bus;
int i;
static struct amd_chipset_info {
struct pci_dev *nb_dev;
struct pci_dev *smbus_dev;
-@@ -511,6 +513,10 @@ void usb_amd_dev_put(void)
+@@ -518,6 +520,10 @@ void usb_amd_dev_put(void)
}
EXPORT_SYMBOL_GPL(usb_amd_dev_put);
/*
* Make sure the controller is completely inactive, unable to
* generate interrupts or do DMA.
-@@ -590,8 +596,17 @@ reset_needed:
+@@ -597,8 +603,17 @@ reset_needed:
uhci_reset_hc(pdev, base);
return 1;
}
static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
{
u16 cmd;
-@@ -1158,3 +1173,4 @@ static void quirk_usb_early_handoff(stru
+@@ -1165,3 +1180,4 @@ static void quirk_usb_early_handoff(stru
}
DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
uart->capabilities = up->capabilities;
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
-@@ -2254,6 +2254,7 @@ uart_report_port(struct uart_driver *drv
+@@ -2259,6 +2259,7 @@ uart_report_port(struct uart_driver *drv
snprintf(address, sizeof(address),
"I/O 0x%lx offset 0x%x", port->iobase, port->hub6);
break;
case UPIO_MEM:
case UPIO_MEM16:
case UPIO_MEM32:
-@@ -2926,6 +2927,7 @@ int uart_match_port(struct uart_port *po
+@@ -2931,6 +2932,7 @@ int uart_match_port(struct uart_port *po
case UPIO_HUB6:
return (port1->iobase == port2->iobase) &&
(port1->hub6 == port2->hub6);
case UPIO_AU:
p->serial_out(p, offset, value);
p->serial_in(p, UART_LCR); /* safe, no side-effects */
-@@ -2758,6 +2778,7 @@ static int serial8250_request_std_resour
+@@ -2759,6 +2779,7 @@ static int serial8250_request_std_resour
case UPIO_MEM32BE:
case UPIO_MEM16:
case UPIO_MEM:
if (!port->mapbase)
break;
-@@ -2796,6 +2817,7 @@ static void serial8250_release_std_resou
+@@ -2797,6 +2818,7 @@ static void serial8250_release_std_resou
case UPIO_MEM32BE:
case UPIO_MEM16:
case UPIO_MEM: