diff options
author | Stefan Assmann <sassmann@kpanic.de> | 2021-03-16 13:01:41 +0300 |
---|---|---|
committer | Tony Nguyen <anthony.l.nguyen@intel.com> | 2021-07-19 19:18:30 +0300 |
commit | 226d528512cfac890a1619aea4301f3dd314fe60 (patch) | |
tree | 024b3672b6aeb35607f6d990c3d805161a8dacb5 /net/switchdev/switchdev.c | |
parent | 22c8fd71d3a5e6fe584ccc2c1e8760e5baefd5aa (diff) | |
download | linux-226d528512cfac890a1619aea4301f3dd314fe60.tar.xz |
iavf: fix locking of critical sections
To avoid races between iavf_init_task(), iavf_reset_task(),
iavf_watchdog_task(), iavf_adminq_task() as well as the shutdown and
remove functions more locking is required.
The current protection by __IAVF_IN_CRITICAL_TASK is needed in
additional places.
- The reset task performs state transitions, therefore needs locking.
- The adminq task acts on replies from the PF in
iavf_virtchnl_completion() which may alter the states.
- The init task is not only run during probe but also if a VF gets stuck
to reinitialize it.
- The shutdown function performs a state transition.
- The remove function performs a state transition and also free's
resources.
iavf_lock_timeout() is introduced to avoid waiting infinitely
and cause a deadlock. Rather unlock and print a warning.
Signed-off-by: Stefan Assmann <sassmann@kpanic.de>
Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Diffstat (limited to 'net/switchdev/switchdev.c')
0 files changed, 0 insertions, 0 deletions