Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sfc: move initialisation of efx->filter_sem to efx_init_struct()

efx_probe_filters() has not been called yet when EF100 calls into
efx_mcdi_filter_table_probe(), for which it wants to take the
filter_sem.

Fixes: a9dc3d5612ce ("sfc_ef100: RX filter table management and related gubbins")
Signed-off-by: Edward Cree <ecree@solarflare.com>
Link: https://lore.kernel.org/r/24fad43e-887d-051e-25e3-506f23f63abf@solarflare.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Edward Cree and committed by
Jakub Kicinski
05f90bf3 b7c24497

+1 -1
+1
drivers/net/ethernet/sfc/efx_common.c
··· 1014 1014 efx->num_mac_stats = MC_CMD_MAC_NSTATS; 1015 1015 BUILD_BUG_ON(MC_CMD_MAC_NSTATS - 1 != MC_CMD_MAC_GENERATION_END); 1016 1016 mutex_init(&efx->mac_lock); 1017 + init_rwsem(&efx->filter_sem); 1017 1018 #ifdef CONFIG_RFS_ACCEL 1018 1019 mutex_init(&efx->rps_mutex); 1019 1020 spin_lock_init(&efx->rps_hash_lock);
-1
drivers/net/ethernet/sfc/rx_common.c
··· 797 797 { 798 798 int rc; 799 799 800 - init_rwsem(&efx->filter_sem); 801 800 mutex_lock(&efx->mac_lock); 802 801 down_write(&efx->filter_sem); 803 802 rc = efx->type->filter_table_probe(efx);