net: macb: Check DMA mappings for error
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-gd158fc7f36a2 #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: Soren Brinkmann <soren.brinkmann@xilinx.com>
Reviewed-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>