Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752691AbbHCClN (ORCPT ); Sun, 2 Aug 2015 22:41:13 -0400 Received: from m50-133.163.com ([123.125.50.133]:46133 "EHLO m50-133.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751967AbbHCClM (ORCPT ); Sun, 2 Aug 2015 22:41:12 -0400 From: Jia-Ju Bai To: jeffrey.t.kirsher@intel.com, jesse.brandeburg@intel.com Cc: intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Jia-Ju Bai Subject: [PATCH] e100: Release skb when DMA mapping is failed in e100_xmit_prepare Date: Mon, 3 Aug 2015 10:40:48 +0800 Message-Id: <1438569648-20469-1-git-send-email-baijiaju1990@163.com> X-Mailer: git-send-email 1.7.9.5 X-CM-TRANSID: DdGowEDJvUWz1L5VZ4edAA--.177S2 X-Coremail-Antispam: 1Uf129KBjvdXoW7XFy8ZF4fCFy7Kw1xCFW7Arb_yoWkGFbEgF y09ryxGw45AFySqw4jvr15Z3sIkryDX348Zr97ta43XrnxArs7GrZ7uFs3Wrs7Ww4xCFyD C343WFyxC34qvjkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7IUntKItUUUUU== X-Originating-IP: [173.252.200.40] X-CM-SenderInfo: xedlyx5dmximizq6il2tof0z/1tbiTh5LelUCnHMENwAAsq Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1321 Lines: 36 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 --- drivers/net/ethernet/intel/e100.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/e100.c b/drivers/net/ethernet/intel/e100.c index d2657a4..cc90616 100644 --- a/drivers/net/ethernet/intel/e100.c +++ b/drivers/net/ethernet/intel/e100.c @@ -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 -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/