• S
    net: macb: Check DMA mappings for error · 92030908
    Soren Brinkmann 提交于
    With CONFIG_DMA_API_DEBUG enabled the following warning is printed:
     WARNING: CPU: 0 PID: 619 at lib/dma-debug.c:1101 check_unmap+0x758/0x894()
     macb e000b000.ethernet: DMA-API: device driver failed to check map error[device address=0x000000002d171c02] [size=322 bytes] [mapped as single]
     Modules linked in:
     CPU: 0 PID: 619 Comm: udhcpc Not tainted 3.14.0-rc3-xilinx-00219-gd158fc7f #63
     [<c001516c>] (unwind_backtrace) from [<c0011df8>] (show_stack+0x10/0x14)
     [<c0011df8>] (show_stack) from [<c03c7714>] (dump_stack+0x7c/0xc8)
     [<c03c7714>] (dump_stack) from [<c00245cc>] (warn_slowpath_common+0x60/0x84)
     [<c00245cc>] (warn_slowpath_common) from [<c0024670>] (warn_slowpath_fmt+0x2c/0x3c)
     [<c0024670>] (warn_slowpath_fmt) from [<c0228244>] (check_unmap+0x758/0x894)
     [<c0228244>] (check_unmap) from [<c0228588>] (debug_dma_unmap_page+0x64/0x70)
     [<c0228588>] (debug_dma_unmap_page) from [<c02aba64>] (macb_interrupt+0x1f8/0x2dc)
     [<c02aba64>] (macb_interrupt) from [<c006c6e4>] (handle_irq_event_percpu+0x2c/0x178)
     [<c006c6e4>] (handle_irq_event_percpu) from [<c006c86c>] (handle_irq_event+0x3c/0x5c)
     [<c006c86c>] (handle_irq_event) from [<c006f548>] (handle_fasteoi_irq+0xb8/0x100)
     [<c006f548>] (handle_fasteoi_irq) from [<c006c148>] (generic_handle_irq+0x20/0x30)
     [<c006c148>] (generic_handle_irq) from [<c000f35c>] (handle_IRQ+0x64/0x8c)
     [<c000f35c>] (handle_IRQ) from [<c0008528>] (gic_handle_irq+0x3c/0x60)
     [<c0008528>] (gic_handle_irq) from [<c0012904>] (__irq_svc+0x44/0x78)
     Exception stack(0xed197f60 to 0xed197fa8)
     7f60: 00000134 60000013 bd94362e bd94362e be96b37c 00000014 fffffd72 00000122
     7f80: c000ebe4 ed196000 00000000 00000011 c032c0d8 ed197fa8 c0064008 c000ea20
     7fa0: 60000013 ffffffff
     [<c0012904>] (__irq_svc) from [<c000ea20>] (ret_fast_syscall+0x0/0x48)
     ---[ end trace 478f921d0d542d1e ]---
     Mapped at:
      [<c0227184>] debug_dma_map_page+0x48/0x11c
      [<c02aaca0>] macb_start_xmit+0x184/0x2a8
      [<c03143c0>] dev_hard_start_xmit+0x334/0x470
      [<c032c09c>] sch_direct_xmit+0x78/0x2f8
      [<c0314814>] __dev_queue_xmit+0x318/0x708
    
    due to missing checks of the dma mapping. Add the appropriate checks to fix
    this.
    Signed-off-by: NSoren Brinkmann <soren.brinkmann@xilinx.com>
    Reviewed-by: NBen Hutchings <ben@decadent.org.uk>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    92030908
macb.c 50.4 KB