linux/drivers/net/ethernet/ibm
Tyrel Datwyler 756af9c642 ibmveth: fix DMA unmap error in ibmveth_xmit_start error path
Commit 33a48ab105 ("ibmveth: Fix DMA unmap error") fixed an issue in the
normal code path of ibmveth_xmit_start() that was originally introduced by
Commit 6e8ab30ec6 ("ibmveth: Add scatter-gather support"). This original
fix missed the error path where dma_unmap_page is wrongly called on the
header portion in descs[0] which was mapped with dma_map_single. As a
result a failure to DMA map any of the frags results in a dmesg warning
when CONFIG_DMA_API_DEBUG is enabled.

------------[ cut here ]------------
DMA-API: ibmveth 30000002: device driver frees DMA memory with wrong function
  [device address=0x000000000a430000] [size=172 bytes] [mapped as page] [unmapped as single]
WARNING: CPU: 1 PID: 8426 at kernel/dma/debug.c:1085 check_unmap+0x4fc/0xe10
...
<snip>
...
DMA-API: Mapped at:
ibmveth_start_xmit+0x30c/0xb60
dev_hard_start_xmit+0x100/0x450
sch_direct_xmit+0x224/0x490
__qdisc_run+0x20c/0x980
__dev_queue_xmit+0x1bc/0xf20

This fixes the API misuse by unampping descs[0] with dma_unmap_single.

Fixes: 6e8ab30ec6 ("ibmveth: Add scatter-gather support")
Signed-off-by: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-12-31 15:40:11 -08:00
..
ehea Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-10-03 21:00:17 -07:00
emac Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-12-09 21:43:31 -08:00
ibmveth.c ibmveth: fix DMA unmap error in ibmveth_xmit_start error path 2018-12-31 15:40:11 -08:00
ibmveth.h ibmveth: Support to enable LSO/CSO for Trunk VEA. 2017-05-21 13:29:01 -04:00
ibmvnic.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-12-20 11:53:36 -08:00
ibmvnic.h ibmvnic: Convert reset work item mutex to spin lock 2018-12-10 17:34:25 -08:00
Kconfig Driver for IBM System i/p VNIC protocol 2015-12-28 00:12:13 -05:00
Makefile Driver for IBM System i/p VNIC protocol 2015-12-28 00:12:13 -05:00