Message ID | 20160618085038.GF21713@mwanda |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
diff --git a/drivers/net/ethernet/cavium/liquidio/lio_main.c b/drivers/net/ethernet/cavium/liquidio/lio_main.c index 1126422..41ee8bd 100644 --- a/drivers/net/ethernet/cavium/liquidio/lio_main.c +++ b/drivers/net/ethernet/cavium/liquidio/lio_main.c @@ -2376,7 +2376,7 @@ static void liquidio_set_mcast_list(struct net_device *netdev) memcpy(((u8 *)mc) + 2, ha->addr, ETH_ALEN); /* no need to swap bytes */ - if (++mc > &nctrl.udd[mc_count]) + if (++mc >= &nctrl.udd[mc_count]) break; }
The nctrl.udd[] array has 32 elements of size u64. Imagine that netdev_mc_count() returns more than 32. That means "mc_count" is 32. On the last iteration through the loop we have mc == &nctrl.udd[32] so we're writing one element beyond the end of the array. Fixes: f21fb3ed364b ('Add support of Cavium Liquidio ethernet adapters') Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>