forked from mirrors/linux
		
	e100: Release skb when DMA mapping is failed in e100_xmit_prepare
When pci_dma_mapping_error in e100_xmit_prepare is failed, the skb buffer allocated by netdev_alloc_skb_ip_align in e100_rx_alloc_skb is not released, which causes a possible resource leak. This patch adds error handling code to fix it. Signed-off-by: Jia-Ju Bai <baijiaju1990@163.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
		
							parent
							
								
									9ad607b4a9
								
							
						
					
					
						commit
						5e5d49422d
					
				
					 1 changed files with 4 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -1770,8 +1770,11 @@ static int e100_xmit_prepare(struct nic *nic, struct cb *cb,
 | 
			
		|||
	dma_addr = pci_map_single(nic->pdev,
 | 
			
		||||
				  skb->data, skb->len, PCI_DMA_TODEVICE);
 | 
			
		||||
	/* If we can't map the skb, have the upper layer try later */
 | 
			
		||||
	if (pci_dma_mapping_error(nic->pdev, dma_addr))
 | 
			
		||||
	if (pci_dma_mapping_error(nic->pdev, dma_addr)) {
 | 
			
		||||
		dev_kfree_skb_any(skb);
 | 
			
		||||
		skb = NULL;
 | 
			
		||||
		return -ENOMEM;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Use the last 4 bytes of the SKB payload packet as the CRC, used for
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue