Commit 6c74651c authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller

ipoib: returned back addrlen check for mc addresses

Apparently bogus mc address can break IPOIB multicast processing. Therefore
returning the check for addrlen back until this is resolved in bonding (I don't
see any other point from where mc address with non-dev->addr_len length can came
from).
Signed-off-by: default avatarJiri Pirko <jpirko@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent cf0aa4e0
...@@ -767,8 +767,11 @@ void ipoib_mcast_dev_flush(struct net_device *dev) ...@@ -767,8 +767,11 @@ void ipoib_mcast_dev_flush(struct net_device *dev)
} }
} }
static int ipoib_mcast_addr_is_valid(const u8 *addr, const u8 *broadcast) static int ipoib_mcast_addr_is_valid(const u8 *addr, unsigned int addrlen,
const u8 *broadcast)
{ {
if (addrlen != INFINIBAND_ALEN)
return 0;
/* reserved QPN, prefix, scope */ /* reserved QPN, prefix, scope */
if (memcmp(addr, broadcast, 6)) if (memcmp(addr, broadcast, 6))
return 0; return 0;
...@@ -812,6 +815,7 @@ void ipoib_mcast_restart_task(struct work_struct *work) ...@@ -812,6 +815,7 @@ void ipoib_mcast_restart_task(struct work_struct *work)
union ib_gid mgid; union ib_gid mgid;
if (!ipoib_mcast_addr_is_valid(mclist->dmi_addr, if (!ipoib_mcast_addr_is_valid(mclist->dmi_addr,
mclist->dmi_addrlen,
dev->broadcast)) dev->broadcast))
continue; continue;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment