Re: [PATCH v2 1/2] net: fec: use managed DMA API functions to allocate BD ring

2015-07-23 Thread Lucas Stach
Am Mittwoch, den 22.07.2015, 01:55 + schrieb Duan Andy:
 From: Lucas Stach l.st...@pengutronix.de Sent: Tuesday, July 21, 2015 11:11 
 PM
  To: David S. Miller
  Cc: Duan Fugang-B38611; Li Frank-B20596; netdev@vger.kernel.org;
  ker...@pengutronix.de; patchwork-...@pengutronix.de
  Subject: [PATCH v2 1/2] net: fec: use managed DMA API functions to
  allocate BD ring
  
  So it gets freed when the device is going away.
  This fixes a DMA memory leak on driver probe() fail and driver remove().
  
  Signed-off-by: Lucas Stach l.st...@pengutronix.de
  ---
  v2: Fix indentation of second line to fix alignment with opening bracket.
  ---
   drivers/net/ethernet/freescale/fec_main.c | 4 ++--
   1 file changed, 2 insertions(+), 2 deletions(-)
  
  diff --git a/drivers/net/ethernet/freescale/fec_main.c
  b/drivers/net/ethernet/freescale/fec_main.c
  index 349365d85b92..a7f1bdf718f8 100644
  --- a/drivers/net/ethernet/freescale/fec_main.c
  +++ b/drivers/net/ethernet/freescale/fec_main.c
  @@ -3142,8 +3142,8 @@ static int fec_enet_init(struct net_device *ndev)
  fep-bufdesc_size;
  
  /* Allocate memory for buffer descriptors. */
  -   cbd_base = dma_alloc_coherent(NULL, bd_size, bd_dma,
  - GFP_KERNEL);
  +   cbd_base = dmam_alloc_coherent(fep-pdev-dev, bd_size, bd_dma,
  +  GFP_KERNEL);
  if (!cbd_base) {
  return -ENOMEM;
  }
  --
 
 Can you also replace the below position with dma_alloc_coherent() ?
 txq-tso_hdrs = dma_alloc_coherent(NULL,
 txq-tx_ring_size * TSO_HEADER_SIZE,
 txq-tso_hdrs_dma,
 GFP_KERNEL);
 
 
No, that one has an explicit free functions.
So using managed function would result in a double free in paths. We
might want to move those over to devm eventually to make the error
handling more robust, but that's clearly out of the scope of this patch.

Regards,
Lucas

-- 
Pengutronix e.K. | Lucas Stach |
Industrial Linux Solutions   | http://www.pengutronix.de/  |

--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 1/2] net: fec: use managed DMA API functions to allocate BD ring

2015-07-21 Thread Lucas Stach
So it gets freed when the device is going away.
This fixes a DMA memory leak on driver probe() fail and driver
remove().

Signed-off-by: Lucas Stach l.st...@pengutronix.de
---
v2: Fix indentation of second line to fix alignment with opening bracket.
---
 drivers/net/ethernet/freescale/fec_main.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/freescale/fec_main.c 
b/drivers/net/ethernet/freescale/fec_main.c
index 349365d85b92..a7f1bdf718f8 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -3142,8 +3142,8 @@ static int fec_enet_init(struct net_device *ndev)
fep-bufdesc_size;
 
/* Allocate memory for buffer descriptors. */
-   cbd_base = dma_alloc_coherent(NULL, bd_size, bd_dma,
- GFP_KERNEL);
+   cbd_base = dmam_alloc_coherent(fep-pdev-dev, bd_size, bd_dma,
+  GFP_KERNEL);
if (!cbd_base) {
return -ENOMEM;
}
-- 
2.1.4

--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH v2 1/2] net: fec: use managed DMA API functions to allocate BD ring

2015-07-21 Thread Duan Andy
From: Lucas Stach l.st...@pengutronix.de Sent: Tuesday, July 21, 2015 11:11 PM
 To: David S. Miller
 Cc: Duan Fugang-B38611; Li Frank-B20596; netdev@vger.kernel.org;
 ker...@pengutronix.de; patchwork-...@pengutronix.de
 Subject: [PATCH v2 1/2] net: fec: use managed DMA API functions to
 allocate BD ring
 
 So it gets freed when the device is going away.
 This fixes a DMA memory leak on driver probe() fail and driver remove().
 
 Signed-off-by: Lucas Stach l.st...@pengutronix.de
 ---
 v2: Fix indentation of second line to fix alignment with opening bracket.
 ---
  drivers/net/ethernet/freescale/fec_main.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/ethernet/freescale/fec_main.c
 b/drivers/net/ethernet/freescale/fec_main.c
 index 349365d85b92..a7f1bdf718f8 100644
 --- a/drivers/net/ethernet/freescale/fec_main.c
 +++ b/drivers/net/ethernet/freescale/fec_main.c
 @@ -3142,8 +3142,8 @@ static int fec_enet_init(struct net_device *ndev)
   fep-bufdesc_size;
 
   /* Allocate memory for buffer descriptors. */
 - cbd_base = dma_alloc_coherent(NULL, bd_size, bd_dma,
 -   GFP_KERNEL);
 + cbd_base = dmam_alloc_coherent(fep-pdev-dev, bd_size, bd_dma,
 +GFP_KERNEL);
   if (!cbd_base) {
   return -ENOMEM;
   }
 --

Can you also replace the below position with dma_alloc_coherent() ?
txq-tso_hdrs = dma_alloc_coherent(NULL,
txq-tx_ring_size * TSO_HEADER_SIZE,
txq-tso_hdrs_dma,
GFP_KERNEL);


Regards,
Andy
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html