ice: lag: in RCU, use atomic allocation
[ Upstream commit e1db8c2a01d7e12bd566106fbeefa3c5cccd2003 ] Sleeping is not allowed in RCU read-side critical sections. Use atomic allocations under rcu_read_lock. Fixes:1e0f9881ef
("ice: Flesh out implementation of support for SRIOV on bonded interface") Fixes:41ccedf5ca
("ice: implement lag netdev event handler") Fixes:3579aa86fb
("ice: update reset path for SRIOV LAG support") Signed-off-by: Michal Schmidt <mschmidt@redhat.com> Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com> Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel) Reviewed-by: Simon Horman <horms@kernel.org> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
cceeddd5ca
commit
6f8e5afed2
|
@ -595,7 +595,7 @@ void ice_lag_move_new_vf_nodes(struct ice_vf *vf)
|
|||
INIT_LIST_HEAD(&ndlist.node);
|
||||
rcu_read_lock();
|
||||
for_each_netdev_in_bond_rcu(lag->upper_netdev, tmp_nd) {
|
||||
nl = kzalloc(sizeof(*nl), GFP_KERNEL);
|
||||
nl = kzalloc(sizeof(*nl), GFP_ATOMIC);
|
||||
if (!nl)
|
||||
break;
|
||||
|
||||
|
@ -1666,7 +1666,7 @@ ice_lag_event_handler(struct notifier_block *notif_blk, unsigned long event,
|
|||
|
||||
rcu_read_lock();
|
||||
for_each_netdev_in_bond_rcu(upper_netdev, tmp_nd) {
|
||||
nd_list = kzalloc(sizeof(*nd_list), GFP_KERNEL);
|
||||
nd_list = kzalloc(sizeof(*nd_list), GFP_ATOMIC);
|
||||
if (!nd_list)
|
||||
break;
|
||||
|
||||
|
@ -2040,7 +2040,7 @@ void ice_lag_rebuild(struct ice_pf *pf)
|
|||
INIT_LIST_HEAD(&ndlist.node);
|
||||
rcu_read_lock();
|
||||
for_each_netdev_in_bond_rcu(lag->upper_netdev, tmp_nd) {
|
||||
nl = kzalloc(sizeof(*nl), GFP_KERNEL);
|
||||
nl = kzalloc(sizeof(*nl), GFP_ATOMIC);
|
||||
if (!nl)
|
||||
break;
|
||||
|
||||
|
|
Loading…
Reference in New Issue