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>
This commit is contained in:
parent
9d186cac7f
commit
9b9ba821b6
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue