sfc: fix addr_list_lock spinlock use before init
Reported by Nikolay Aleksandrov. In efx_init_port() we call efx_mac_reconfigure() to work around a Falcon/A1 limitation, and this calls efx_{arch}_filter_sync_rx_mode(), which takes the addr_list_lock; but this lock is uninitialised, because we haven't called register_netdevice() yet. So, in efx_farch_filter_sync_rx_mode(), check efx_dev_registered() before doing anything else. The EF10 equivalent, efx_ef10_filter_sync_rx_mode(), already has the corresponding check. Signed-off-by: Edward Cree <ecree@solarflare.com> Tested-by: Nikolay Aleksandrov <nikolay@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
929a031dfd
commit
f650fb456f
@ -2933,6 +2933,9 @@ void efx_farch_filter_sync_rx_mode(struct efx_nic *efx)
|
|||||||
u32 crc;
|
u32 crc;
|
||||||
int bit;
|
int bit;
|
||||||
|
|
||||||
|
if (!efx_dev_registered(efx))
|
||||||
|
return;
|
||||||
|
|
||||||
netif_addr_lock_bh(net_dev);
|
netif_addr_lock_bh(net_dev);
|
||||||
|
|
||||||
efx->unicast_filter = !(net_dev->flags & IFF_PROMISC);
|
efx->unicast_filter = !(net_dev->flags & IFF_PROMISC);
|
||||||
|
Loading…
Reference in New Issue
Block a user