From: David S. Miller Date: Tue, 14 Jul 2015 00:28:09 +0000 (-0700) Subject: Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net X-Git-Tag: v4.3-rc1~96^2~364 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=638d3c63811e31b2745f7fdd568b38c8abcffe03;p=linux-2.6-block.git Merge git://git./linux/kernel/git/davem/net Conflicts: net/bridge/br_mdb.c Minor conflict in br_mdb.c, in 'net' we added a memset of the on-stack 'ip' variable whereas in 'net-next' we assign a new member 'vid'. Signed-off-by: David S. Miller --- 638d3c63811e31b2745f7fdd568b38c8abcffe03 diff --cc net/bridge/br_mdb.c index a8d0e93d43f2,c11cf2611db0..9f7cdd27b762 --- a/net/bridge/br_mdb.c +++ b/net/bridge/br_mdb.c @@@ -352,8 -348,10 +353,10 @@@ static int br_mdb_add_group(struct net_ if (unlikely(!p)) return -ENOMEM; rcu_assign_pointer(*pp, p); + if (state == MDB_TEMPORARY) + mod_timer(&p->timer, now + br->multicast_membership_interval); - br_mdb_notify(br->dev, port, group, RTM_NEWMDB); + br_mdb_notify(br->dev, port, group, RTM_NEWMDB, state); return 0; } @@@ -376,7 -374,7 +379,8 @@@ static int __br_mdb_add(struct net *net if (!p || p->br != br || p->state == BR_STATE_DISABLED) return -EINVAL; + memset(&ip, 0, sizeof(ip)); + ip.vid = entry->vid; ip.proto = entry->addr.proto; if (ip.proto == htons(ETH_P_IP)) ip.u.ip4 = entry->addr.u.ip4; @@@ -423,21 -421,14 +427,15 @@@ static int __br_mdb_del(struct net_brid if (!netif_running(br->dev) || br->multicast_disabled) return -EINVAL; + memset(&ip, 0, sizeof(ip)); + ip.vid = entry->vid; ip.proto = entry->addr.proto; - if (ip.proto == htons(ETH_P_IP)) { - if (timer_pending(&br->ip4_other_query.timer)) - return -EBUSY; - + if (ip.proto == htons(ETH_P_IP)) ip.u.ip4 = entry->addr.u.ip4; #if IS_ENABLED(CONFIG_IPV6) - } else { - if (timer_pending(&br->ip6_other_query.timer)) - return -EBUSY; - + else ip.u.ip6 = entry->addr.u.ip6; #endif - } spin_lock_bh(&br->multicast_lock); mdb = mlock_dereference(br->mdb, br);