linux/drivers/net/ethernet/intel/i40e
Aleksandr Loktionov 37d318d780 i40e: Remove scheduling while atomic possibility
In some occasions task held spinlock (mac_filter_hash_lock),
while being rescheduled due to admin queue mutex_lock.  The struct
i40e_spinlock asq_spinlock, which later expands to struct mutex
spinlock.  Moved i40e_aq_set_vsi_multicast_promiscuous(),
i40e_aq_set_vsi_unicast_promiscuous(),
i40e_aq_set_vsi_mc_promisc_on_vlan(), and
i40e_aq_set_vsi_uc_promisc_on_vlan() outside of atomic context.  Without
this patch there is a race condition, which might result in scheduling
while in atomic context.  The race condition is between the thread, which
holds mac_filter_hash_lock, while trying to acquire an admin queue mutex
and a thread, which already has said admin queue mutex. The thread, which
holds spinlock, fails to acquire the mutex, which causes this thread to
sleep.

Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2020-06-25 22:37:03 -07:00
..
i40e_adminq_cmd.h i40e: remove unused defines 2020-06-25 22:25:13 -07:00
i40e_adminq.c i40e: Make i40e_shutdown_adminq() return void 2020-05-28 20:19:47 -07:00
i40e_adminq.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_alloc.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_client.c i40e: Move client header location 2020-06-25 22:25:13 -07:00
i40e_common.c i40e: Add support for 5Gbps cards 2020-06-25 22:25:13 -07:00
i40e_dcb_nl.c i40e/i40evf: cleanup incorrect function doxygen comments 2018-04-30 09:09:04 -07:00
i40e_dcb.c i40e: Fix for persistent lldp support 2019-10-25 13:38:19 -07:00
i40e_dcb.h i40e: remove unused defines 2020-06-25 22:25:13 -07:00
i40e_ddp.c i40e: Implement DDP support in i40e driver 2019-04-16 15:10:21 -07:00
i40e_debugfs.c i40e: remove unused defines 2020-06-25 22:25:13 -07:00
i40e_devids.h i40e: Add support for 5Gbps cards 2020-06-25 22:25:13 -07:00
i40e_diag.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_diag.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_ethtool.c net/intel: remove driver versions from Intel drivers 2020-06-25 22:25:13 -07:00
i40e_hmc.c i40e: Implement debug macro hw_dbg using dev_dbg 2019-09-09 11:22:20 -07:00
i40e_hmc.h i40e: remove unused defines 2020-06-25 22:25:13 -07:00
i40e_lan_hmc.c treewide: Use sizeof_field() macro 2019-12-09 10:36:44 -08:00
i40e_lan_hmc.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_main.c net/intel: remove driver versions from Intel drivers 2020-06-25 22:25:13 -07:00
i40e_nvm.c i40e: Fix for persistent lldp support 2019-10-25 13:38:19 -07:00
i40e_osdep.h i40e: remove unused defines 2020-06-25 22:25:13 -07:00
i40e_prototype.h i40e: Make i40e_shutdown_adminq() return void 2020-05-28 20:19:47 -07:00
i40e_ptp.c i40e: use ktime_get_real_ts64 instead of ktime_to_timespec64 2019-09-11 09:10:45 -07:00
i40e_register.h i40e: detect and log info about pre-recovery mode 2020-06-25 22:25:13 -07:00
i40e_status.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_trace.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_txrx_common.h i40e: Separate kernel allocated rx_bi rings from AF_XDP rings 2020-05-21 17:31:26 -07:00
i40e_txrx.c xdp: Rename convert_to_xdp_frame in xdp_convert_buff_to_frame 2020-06-01 15:02:53 -07:00
i40e_txrx.h i40e: remove unused defines 2020-06-25 22:25:13 -07:00
i40e_type.h i40e: remove unused defines 2020-06-25 22:25:13 -07:00
i40e_virtchnl_pf.c i40e: Remove scheduling while atomic possibility 2020-06-25 22:37:03 -07:00
i40e_virtchnl_pf.h i40e: remove unused defines 2020-06-25 22:25:13 -07:00
i40e_xsk.c i40e: trivial fixup of comments in i40e_xsk.c 2020-05-28 19:55:17 -07:00
i40e_xsk.h i40e, xsk: Migrate to new MEM_TYPE_XSK_BUFF_POOL 2020-05-21 17:31:26 -07:00
i40e.h net/intel: remove driver versions from Intel drivers 2020-06-25 22:25:13 -07:00
Makefile i40e: Implement DDP support in i40e driver 2019-04-16 15:10:21 -07:00