mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	xdp: check device pointer before clearing
We should not call 'ndo_bpf()' or 'dev_put()' with NULL argument.
Fixes: c9b47cc1fa ("xsk: fix bug when trying to use both copy and zero-copy on one queue id")
Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Acked-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
			
			
This commit is contained in:
		
							parent
							
								
									f12dd75959
								
							
						
					
					
						commit
						01d76b5317
					
				
					 1 changed files with 6 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -143,6 +143,9 @@ static void xdp_umem_clear_dev(struct xdp_umem *umem)
 | 
			
		|||
	struct netdev_bpf bpf;
 | 
			
		||||
	int err;
 | 
			
		||||
 | 
			
		||||
	if (!umem->dev)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	if (umem->zc) {
 | 
			
		||||
		bpf.command = XDP_SETUP_XSK_UMEM;
 | 
			
		||||
		bpf.xsk.umem = NULL;
 | 
			
		||||
| 
						 | 
				
			
			@ -156,11 +159,9 @@ static void xdp_umem_clear_dev(struct xdp_umem *umem)
 | 
			
		|||
			WARN(1, "failed to disable umem!\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (umem->dev) {
 | 
			
		||||
	rtnl_lock();
 | 
			
		||||
	xdp_clear_umem_at_qid(umem->dev, umem->queue_id);
 | 
			
		||||
	rtnl_unlock();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (umem->zc) {
 | 
			
		||||
		dev_put(umem->dev);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue