Skip to content
  • Tyrel Datwyler's avatar
    ibmveth: fix DMA unmap error in ibmveth_xmit_start error path · 756af9c6
    Tyrel Datwyler authored
    Commit 33a48ab1 ("ibmveth: Fix DMA unmap error") fixed an issue in the
    normal code path of ibmveth_xmit_start() that was originally introduced by
    Commit 6e8ab30e ("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: 6e8ab30e
    
     ("ibmveth: Add scatter-gather support")
    Signed-off-by: default avatarTyrel Datwyler <tyreld@linux.vnet.ibm.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    756af9c6