Patch "net: mvneta: fix DMA buffer unmapping in mvneta_rx()" has been added to the 4.2-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
net: mvneta: fix DMA buffer unmapping in mvneta_rx()
to the 4.2-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
net-mvneta-fix-dma-buffer-unmapping-in-mvneta_rx.patch
and it can be found in the queue-4.2 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Wed Sep 30 05:25:07 CEST 2015
From: Simon Guinot <[email protected]>
Date: Tue, 15 Sep 2015 22:41:21 +0200
Subject: net: mvneta: fix DMA buffer unmapping in mvneta_rx()
From: Simon Guinot <[email protected]>
[ Upstream commit daf158d0d544cec80b7b30deff8cfc59a6e17610 ]
This patch fixes a regression introduced by the commit a84e32894191 ("net: mvneta: fix refilling for Rx DMA buffers"). Due to this commit the newly allocated Rx buffers are DMA-unmapped in place of those passed to the networking stack. Obviously, this causes data corruptions.
This patch fixes the issue by ensuring that the right Rx buffers are DMA-unmapped.
--- drivers/net/ethernet/marvell/mvneta.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/net/ethernet/marvell/mvneta.c +3 -1
@@ -1479,6 +1479,7 @@ static int mvneta_rx(struct mvneta_portstruct mvneta_rx_desc *rx_desc =mvneta_rxq_next_desc_get (rxq);struct sk_buff *skb;unsigned char *data; +dma_addr_t phys_addr;u32 rx_status;int rx_bytes, err;
@@ -1486,6 +1487,7 @@ static int mvneta_rx(struct mvneta_port rx_status = rx_desc->status; rx_bytes = rx_desc->data_size - (ETH_FCS_LEN +MVNETA_MH_SIZE ); data = (unsigned char *)rx_desc->buf_cookie; + phys_addr = rx_desc->buf_phys_addr;if (!mvneta_rxq_desc_is_first_last (rx_status) || (rx_status &MVNETA_RXD_ERR_SUMMARY )) {
@@ -1534,7 +1536,7 @@ static int mvneta_rx(struct mvneta_portif (!skb) goto err_drop_frame; -dma_unmap_single (dev->dev.parent, rx_desc->buf_phys_addr, +dma_unmap_single (dev->dev.parent, phys_addr,MVNETA_RX_BUF_SIZE (pp->pkt_size),DMA_FROM_DEVICE ); rcvd_pkts++;
Patches currently in stable-queue which might be from [email protected] are
queue-4.2/net-mvneta-fix-dma-buffer-unmapping-in-mvneta_rx.patch