mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	mlx5e: add add missing BH locking around napi_schdule()
It's not correct to call napi_schedule() in pure process
context. Because we use __raise_softirq_irqoff() we require
callers to be in a context which will eventually lead to
softirq handling (hardirq, bh disabled, etc.).
With code as is users will see:
 NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #08!!!
Fixes: a8dd7ac12f ("net/mlx5e: Generalize RQ activation")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
			
			
This commit is contained in:
		
							parent
							
								
									6ff51ab8aa
								
							
						
					
					
						commit
						e63052a5dd
					
				
					 1 changed files with 5 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -889,10 +889,13 @@ int mlx5e_open_rq(struct mlx5e_params *params, struct mlx5e_rq_param *param,
 | 
			
		|||
void mlx5e_activate_rq(struct mlx5e_rq *rq)
 | 
			
		||||
{
 | 
			
		||||
	set_bit(MLX5E_RQ_STATE_ENABLED, &rq->state);
 | 
			
		||||
	if (rq->icosq)
 | 
			
		||||
	if (rq->icosq) {
 | 
			
		||||
		mlx5e_trigger_irq(rq->icosq);
 | 
			
		||||
	else
 | 
			
		||||
	} else {
 | 
			
		||||
		local_bh_disable();
 | 
			
		||||
		napi_schedule(rq->cq.napi);
 | 
			
		||||
		local_bh_enable();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void mlx5e_deactivate_rq(struct mlx5e_rq *rq)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue