52 lines
2.0 KiB
Diff
52 lines
2.0 KiB
Diff
From 42113901e335c5431e11e33711f5cdcc8e033955 Mon Sep 17 00:00:00 2001
|
|
From: Tobias Klauser <tklauser@distanz.ch>
|
|
Date: Thu, 14 Aug 2014 13:59:42 +0200
|
|
Subject: [PATCH 2/4] net: xgene: Check negative return value of
|
|
xgene_enet_get_ring_size()
|
|
|
|
xgene_enet_get_ring_size() returns a negative value in case of an error,
|
|
but its only caller in xgene_enet_create_desc_ring() currently uses the
|
|
return value directly as u32. Instead, check for a negative value first and
|
|
error out in case. Also move the call to xgene_enet_get_ring_size() before
|
|
devm_kzalloc() so we don't need to free anything in the error path.
|
|
|
|
This fixes the following issue reported by the Coverity Scanner:
|
|
|
|
** CID 1231336: Improper use of negative value (NEGATIVE_RETURNS)
|
|
/drivers/net/ethernet/apm/xgene/xgene_enet_main.c: 596 in xgene_enet_create_desc_ring()
|
|
|
|
Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 7 +++++--
|
|
1 file changed, 5 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
|
index af7c40a..e1a8f4e 100644
|
|
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
|
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
|
|
@@ -581,7 +581,11 @@ static struct xgene_enet_desc_ring *xgene_enet_create_desc_ring(
|
|
struct xgene_enet_desc_ring *ring;
|
|
struct xgene_enet_pdata *pdata = netdev_priv(ndev);
|
|
struct device *dev = ndev_to_dev(ndev);
|
|
- u32 size;
|
|
+ int size;
|
|
+
|
|
+ size = xgene_enet_get_ring_size(dev, cfgsize);
|
|
+ if (size < 0)
|
|
+ return NULL;
|
|
|
|
ring = devm_kzalloc(dev, sizeof(struct xgene_enet_desc_ring),
|
|
GFP_KERNEL);
|
|
@@ -593,7 +597,6 @@ static struct xgene_enet_desc_ring *xgene_enet_create_desc_ring(
|
|
ring->cfgsize = cfgsize;
|
|
ring->id = ring_id;
|
|
|
|
- size = xgene_enet_get_ring_size(dev, cfgsize);
|
|
ring->desc_addr = dma_zalloc_coherent(dev, size, &ring->dma,
|
|
GFP_KERNEL);
|
|
if (!ring->desc_addr) {
|
|
--
|
|
1.7.10.4
|
|
|