re.s.addr is mapped in octeon_mgmt_rx_fill_ring() with size re.s.len set to netdev->mtu + OCTEON_MGMT_RX_HEADROOM + 8 + NET_IP_ALIGN. It is unmapped in octeon_mgmt_dequeue_rx_buffer() with ETH_FRAME_LEN + OCTEON_MGMT_RX_HEADROOM. Change unmap size to re.s.len. Fixes: d6aa60a10b2f ("NET: Add Ethernet driver for Octeon MGMT devices.") Signed-off-by: Thomas Fourier --- drivers/net/ethernet/cavium/octeon/octeon_mgmt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c b/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c index c190fc6538d4..92050716f103 100644 --- a/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c +++ b/drivers/net/ethernet/cavium/octeon/octeon_mgmt.c @@ -380,9 +380,7 @@ static u64 octeon_mgmt_dequeue_rx_buffer(struct octeon_mgmt *p, p->rx_current_fill--; *pskb = __skb_dequeue(&p->rx_list); - dma_unmap_single(p->dev, re.s.addr, - ETH_FRAME_LEN + OCTEON_MGMT_RX_HEADROOM, - DMA_FROM_DEVICE); + dma_unmap_single(p->dev, re.s.addr, re.s.len, DMA_FROM_DEVICE); return re.d64; } -- 2.53.0