lkml.org 
[lkml]   [2018]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.9 074/281] net/wan/fsl_ucc_hdlc: fix incorrect memory allocation
    Date
    From: Holger Brunck <holger.brunck@keymile.com>

    [ 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>
    ---
    drivers/net/wan/fsl_ucc_hdlc.c | 12 ++++++------
    1 file changed, 6 insertions(+), 6 deletions(-)

    diff --git a/drivers/net/wan/fsl_ucc_hdlc.c b/drivers/net/wan/fsl_ucc_hdlc.c
    index 4c49410c3a1b..dcd5ff43a946 100644
    --- a/drivers/net/wan/fsl_ucc_hdlc.c
    +++ b/drivers/net/wan/fsl_ucc_hdlc.c
    @@ -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 @@ static int uhdlc_init(struct ucc_hdlc_private *priv)
    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;
    --
    2.14.1
    \
     
     \ /
      Last update: 2018-03-19 22:29    [W:7.533 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site