net/wan/fsl_ucc_hdlc: fix incorrect memory allocation
authorHolger Brunck <holger.brunck@keymile.com>
Wed, 17 May 2017 15:24:35 +0000 (17:24 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 13 Apr 2018 17:48:01 +0000 (19:48 +0200)
[ Upstream commit 5b8aad93c52bdda6a731cab8497998cfa0f2df07 ]

We need space for the struct qe_bd and not for a pointer to this struct.

Signed-off-by: Holger Brunck <holger.brunck@keymile.com>
Cc: Zhao Qiang <qiang.zhao@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/wan/fsl_ucc_hdlc.c

index 4c49410..dcd5ff4 100644 (file)
@@ -137,7 +137,7 @@ static int uhdlc_init(struct ucc_hdlc_private *priv)
        priv->tx_ring_size = TX_BD_RING_LEN;
        /* Alloc Rx BD */
        priv->rx_bd_base = dma_alloc_coherent(priv->dev,
-                       RX_BD_RING_LEN * sizeof(struct qe_bd *),
+                       RX_BD_RING_LEN * sizeof(struct qe_bd),
                        &priv->dma_rx_bd, GFP_KERNEL);
 
        if (!priv->rx_bd_base) {
@@ -148,7 +148,7 @@ static int uhdlc_init(struct ucc_hdlc_private *priv)
 
        /* Alloc Tx BD */
        priv->tx_bd_base = dma_alloc_coherent(priv->dev,
-                       TX_BD_RING_LEN * sizeof(struct qe_bd *),
+                       TX_BD_RING_LEN * sizeof(struct qe_bd),
                        &priv->dma_tx_bd, GFP_KERNEL);
 
        if (!priv->tx_bd_base) {
@@ -295,11 +295,11 @@ free_ucc_pram:
        qe_muram_free(priv->ucc_pram_offset);
 free_tx_bd:
        dma_free_coherent(priv->dev,
-                         TX_BD_RING_LEN * sizeof(struct qe_bd *),
+                         TX_BD_RING_LEN * sizeof(struct qe_bd),
                          priv->tx_bd_base, priv->dma_tx_bd);
 free_rx_bd:
        dma_free_coherent(priv->dev,
-                         RX_BD_RING_LEN * sizeof(struct qe_bd *),
+                         RX_BD_RING_LEN * sizeof(struct qe_bd),
                          priv->rx_bd_base, priv->dma_rx_bd);
 free_uccf:
        ucc_fast_free(priv->uccf);
@@ -688,7 +688,7 @@ static void uhdlc_memclean(struct ucc_hdlc_private *priv)
 
        if (priv->rx_bd_base) {
                dma_free_coherent(priv->dev,
-                                 RX_BD_RING_LEN * sizeof(struct qe_bd *),
+                                 RX_BD_RING_LEN * sizeof(struct qe_bd),
                                  priv->rx_bd_base, priv->dma_rx_bd);
 
                priv->rx_bd_base = NULL;
@@ -697,7 +697,7 @@ static void uhdlc_memclean(struct ucc_hdlc_private *priv)
 
        if (priv->tx_bd_base) {
                dma_free_coherent(priv->dev,
-                                 TX_BD_RING_LEN * sizeof(struct qe_bd *),
+                                 TX_BD_RING_LEN * sizeof(struct qe_bd),
                                  priv->tx_bd_base, priv->dma_tx_bd);
 
                priv->tx_bd_base = NULL;