diff options
| author | Dan Carpenter <dan.carpenter@oracle.com> | 2016-03-16 03:45:10 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2016-03-18 19:39:54 -0400 |
| commit | 3af0d554c1ce11e9d0953381ff566271f9ab81a9 (patch) | |
| tree | d263f7c327d7015572cefd06411d912bbd70e7ee | |
| parent | 3004932c804255cc0ed97f2afa31c6d252fed89e (diff) | |
ethernet: micrel: fix some error codes
There were two issues here:
1) dma_mapping_error() return true/false but we want to return -ENOMEM
2) If dmaengine_prep_slave_sg() failed then "err" wasn't set but
presumably that should be -ENOMEM as well.
I changed the success path to "return 0;" instead of "return ret;" for
clarity.
Fixes: 94fe8c683cea ('ks8842: Support DMA when accessed via timberdale')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/ethernet/micrel/ks8842.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/ethernet/micrel/ks8842.c b/drivers/net/ethernet/micrel/ks8842.c index 09d2e16fd6b0..cb0102dd7f70 100644 --- a/drivers/net/ethernet/micrel/ks8842.c +++ b/drivers/net/ethernet/micrel/ks8842.c | |||
| @@ -561,8 +561,8 @@ static int __ks8842_start_new_rx_dma(struct net_device *netdev) | |||
| 561 | sg_init_table(sg, 1); | 561 | sg_init_table(sg, 1); |
| 562 | sg_dma_address(sg) = dma_map_single(adapter->dev, | 562 | sg_dma_address(sg) = dma_map_single(adapter->dev, |
| 563 | ctl->skb->data, DMA_BUFFER_SIZE, DMA_FROM_DEVICE); | 563 | ctl->skb->data, DMA_BUFFER_SIZE, DMA_FROM_DEVICE); |
| 564 | err = dma_mapping_error(adapter->dev, sg_dma_address(sg)); | 564 | if (dma_mapping_error(adapter->dev, sg_dma_address(sg))) { |
| 565 | if (unlikely(err)) { | 565 | err = -ENOMEM; |
| 566 | sg_dma_address(sg) = 0; | 566 | sg_dma_address(sg) = 0; |
| 567 | goto out; | 567 | goto out; |
| 568 | } | 568 | } |
| @@ -572,8 +572,10 @@ static int __ks8842_start_new_rx_dma(struct net_device *netdev) | |||
| 572 | ctl->adesc = dmaengine_prep_slave_sg(ctl->chan, | 572 | ctl->adesc = dmaengine_prep_slave_sg(ctl->chan, |
| 573 | sg, 1, DMA_DEV_TO_MEM, DMA_PREP_INTERRUPT); | 573 | sg, 1, DMA_DEV_TO_MEM, DMA_PREP_INTERRUPT); |
| 574 | 574 | ||
| 575 | if (!ctl->adesc) | 575 | if (!ctl->adesc) { |
| 576 | err = -ENOMEM; | ||
| 576 | goto out; | 577 | goto out; |
| 578 | } | ||
| 577 | 579 | ||
| 578 | ctl->adesc->callback_param = netdev; | 580 | ctl->adesc->callback_param = netdev; |
| 579 | ctl->adesc->callback = ks8842_dma_rx_cb; | 581 | ctl->adesc->callback = ks8842_dma_rx_cb; |
| @@ -584,7 +586,7 @@ static int __ks8842_start_new_rx_dma(struct net_device *netdev) | |||
| 584 | goto out; | 586 | goto out; |
| 585 | } | 587 | } |
| 586 | 588 | ||
| 587 | return err; | 589 | return 0; |
| 588 | out: | 590 | out: |
| 589 | if (sg_dma_address(sg)) | 591 | if (sg_dma_address(sg)) |
| 590 | dma_unmap_single(adapter->dev, sg_dma_address(sg), | 592 | dma_unmap_single(adapter->dev, sg_dma_address(sg), |
