mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
net/wan/fsl_ucc_hdlc: fix incorrect memory allocation
[ Upstream commit 5b8aad93c5 ]
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>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
f74050ed6b
commit
6b3a9354cd
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user