summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorStefan Assmann <sassmann@kpanic.de>2021-03-16 13:01:41 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-09-18 14:41:59 +0300
commit3a59368f586d620ad0fed4d00fa300a5529c3d36 (patch)
tree50663a4cbe68a6d896c5d8ef630c54a20932ac0d /arch
parent932a8f512849e8e35c2d13be1bbe8031d7a3ca40 (diff)
downloadlinux-3a59368f586d620ad0fed4d00fa300a5529c3d36.tar.xz
iavf: fix locking of critical sections
[ Upstream commit 226d528512cfac890a1619aea4301f3dd314fe60 ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'arch')
0 files changed, 0 insertions, 0 deletions