From patchwork Thu Aug 21 20:44:48 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Iyappan Subramanian X-Patchwork-Id: 382040 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id C6E1A1400B2 for ; Fri, 22 Aug 2014 06:44:14 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754288AbaHUUoJ (ORCPT ); Thu, 21 Aug 2014 16:44:09 -0400 Received: from exprod5og124.obsmtp.com ([64.18.0.212]:55393 "HELO exprod5og124.obsmtp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1753562AbaHUUoH (ORCPT ); Thu, 21 Aug 2014 16:44:07 -0400 Received: from mail-pa0-f53.google.com ([209.85.220.53]) (using TLSv1) by exprod5ob124.postini.com ([64.18.4.12]) with SMTP ID DSNKU/ZaF4QA/u1MB3h7rz5BqCoH95/P1yWB@postini.com; Thu, 21 Aug 2014 13:44:07 PDT Received: by mail-pa0-f53.google.com with SMTP id rd3so15179636pab.12 for ; Thu, 21 Aug 2014 13:44:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=FRNwWDn21cwQfP18X6PYdLaadFfmJgz3AjeuA5isTS0=; b=WpUc162xKRqjbZas4hu2jlHD981TGlYsDt1WAWcaSwNeYJ4lFp0wv30wbQfxyifjsf AZGJsexlZKIyXXx5ESSV01ydX/KOgcyQf+k0+cXeGGluVU6e+wNmx+/EP8QAjb8W9x+J pPceUGeFE8ghazAu/PLj2+i+Arluc0/WRA6QYq4oFxKRvV4KB9RnvV5otpjPJzrLzNHC j6FnKYA0lvaglcscyNBuHn05NrMJoISfO72UjIlhrK9gaj4ydfxmBKS9UVpKKAnoJnFk 6oVtIqwLEnVofegSBqX+eEBBVM2/k+nhYR6uYwHFgMmPD4wsnDFc4rjhkL0lEYaKe8gO IDjA== X-Gm-Message-State: ALoCoQmcjR75A89wd64csMq7YgUVoqTU1U4mHufVLas3mPWG8Q3JejwSGWWXKGkH2AEKCD8AZMmqvZKkRbVzeHCe/grUFn5NFV1FNmIv//+Bj/jYRSFAEKUATGNIhdTho5smG27c3cMT X-Received: by 10.66.174.72 with SMTP id bq8mr1186143pac.88.1408653846587; Thu, 21 Aug 2014 13:44:06 -0700 (PDT) X-Received: by 10.66.174.72 with SMTP id bq8mr1186133pac.88.1408653846498; Thu, 21 Aug 2014 13:44:06 -0700 (PDT) Received: from svdclab-13-11.amcc.com (67-207-112-226.static.wiline.com. [67.207.112.226]) by mx.google.com with ESMTPSA id ni5sm40196631pdb.35.2014.08.21.13.44.04 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 21 Aug 2014 13:44:05 -0700 (PDT) From: Iyappan Subramanian To: davem@davemloft.net, netdev@vger.kernel.org Cc: dan.carpenter@oracle.com, Iyappan Subramanian Subject: [PATCH] net: xgene: fix possible NULL dereference in xgene_enet_free_desc_rings() Date: Thu, 21 Aug 2014 13:44:48 -0700 Message-Id: <1408653888-10193-1-git-send-email-isubramanian@apm.com> X-Mailer: git-send-email 1.9.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org A NULL pointer dereference is possible for the argument ring->buf_pool which is passed to xgene_enet_free_desc_ring(), as ring could be NULL. And now since NULL pointers are being checked for before the calls to xgene_enet_free_desc_ring(), might as well take advantage of them and not call the function if the argument would be NULL. Reported-by: Dan Carpenter Signed-off-by: Iyappan Subramanian --- drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c index e1a8f4e..e4222af 100644 --- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c @@ -563,15 +563,21 @@ static void xgene_enet_free_desc_rings(struct xgene_enet_pdata *pdata) struct xgene_enet_desc_ring *ring; ring = pdata->tx_ring; - if (ring && ring->cp_ring && ring->cp_ring->cp_skb) - devm_kfree(dev, ring->cp_ring->cp_skb); - xgene_enet_free_desc_ring(ring); + if (ring) { + if (ring->cp_ring && ring->cp_ring->cp_skb) + devm_kfree(dev, ring->cp_ring->cp_skb); + xgene_enet_free_desc_ring(ring); + } ring = pdata->rx_ring; - if (ring && ring->buf_pool && ring->buf_pool->rx_skb) - devm_kfree(dev, ring->buf_pool->rx_skb); - xgene_enet_free_desc_ring(ring->buf_pool); - xgene_enet_free_desc_ring(ring); + if (ring) { + if (ring->buf_pool) { + if (ring->buf_pool->rx_skb) + devm_kfree(dev, ring->buf_pool->rx_skb); + xgene_enet_free_desc_ring(ring->buf_pool); + } + xgene_enet_free_desc_ring(ring); + } } static struct xgene_enet_desc_ring *xgene_enet_create_desc_ring(