net: qcom/emac: specify the correct size when mapping a DMA buffer
authorTimur Tabi <timur@codeaurora.org>
Fri, 22 Sep 2017 20:32:44 +0000 (15:32 -0500)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Sep 2017 23:34:29 +0000 (16:34 -0700)
When mapping the RX DMA buffers, the driver was accidentally specifying
zero for the buffer length.  Under normal circumstances, SWIOTLB does not
need to allocate a bounce buffer, so the address is just mapped without
checking the size field.  This is why the error was not detected earlier.

Fixes: b9b17debc69d ("net: emac: emac gigabit ethernet controller driver")
Cc: stable@vger.kernel.org
Signed-off-by: Timur Tabi <timur@codeaurora.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qualcomm/emac/emac-mac.c

index 0ea3ca09c68980bd2624102f3e40cc257e23e174..3ed9033e56dbe9231583b8063128eb775abc9671 100644 (file)
@@ -898,7 +898,8 @@ static void emac_mac_rx_descs_refill(struct emac_adapter *adpt,
 
                curr_rxbuf->dma_addr =
                        dma_map_single(adpt->netdev->dev.parent, skb->data,
-                                      curr_rxbuf->length, DMA_FROM_DEVICE);
+                                      adpt->rxbuf_size, DMA_FROM_DEVICE);
+
                ret = dma_mapping_error(adpt->netdev->dev.parent,
                                        curr_rxbuf->dma_addr);
                if (ret) {