Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

8139cp: balance dma_map_single vs dma_unmap_single pair

The driver always:
1. allocate cp->rx_buf_sz + NET_IP_ALIGN
2. map cp->rx_buf_sz

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Francois Romieu and committed by
David S. Miller
839d1624 9799218a

+2 -3
+2 -3
drivers/net/8139cp.c
··· 515 515 dma_addr_t mapping; 516 516 struct sk_buff *skb, *new_skb; 517 517 struct cp_desc *desc; 518 - unsigned buflen; 518 + const unsigned buflen = cp->rx_buf_sz; 519 519 520 520 skb = cp->rx_skb[rx_tail]; 521 521 BUG_ON(!skb); ··· 549 549 pr_debug("%s: rx slot %d status 0x%x len %d\n", 550 550 dev->name, rx_tail, status, len); 551 551 552 - buflen = cp->rx_buf_sz + NET_IP_ALIGN; 553 - new_skb = netdev_alloc_skb(dev, buflen); 552 + new_skb = netdev_alloc_skb(dev, buflen + NET_IP_ALIGN); 554 553 if (!new_skb) { 555 554 dev->stats.rx_dropped++; 556 555 goto rx_next;