Prarit Bhargava
4ff2fd839c
dmaengine: ioatdma: fix dma mapping errors
Several systems are showing the following stack trace:
WARNING: CPU: 0 PID: 2352 at lib/dma-debug.c:1140 check_unmap+0x4ee/0x9e0()
ioatdma 0000:00:04.0: DMA-API: device driver failed to check map error[device address=0x0000000465bad000] [size=4096 bytes] [mapped as page]
Modules linked in: ioatdma(E+) nfsv3 rpcsec_gss_krb5 nfsv4 dns_resolver nfs fscache cfg80211 rfkill x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm crct10dif_pclmul crc32_pclmul crc32c_intel cdc_ether ses ghash_clmulni_intel usbnet mii enclosure aesni_intel lrw gf128mul glue_helper iTCO_wdt shpchp ablk_helper iTCO_vendor_support cryptd pcspkr ipmi_devintf sb_edac lpc_ich edac_core mfd_core ipmi_si i2c_i801 wmi ipmi_msghandler nfsd auth_rpcgss nfs_acl lockd sunrpc xfs libcrc32c sd_mod crc_t10dif crct10dif_common mgag200 syscopyarea sysfillrect sysimgblt drm_kms_helper ttm igb drm ptp pps_core dca i2c_algo_bit i2ccore megaraid_sas dm_mirror dm_region_hash dm_log dm_mod [last unloaded: ioatdma]
CPU: 0 PID: 2352 Comm: insmod Tainted: G E 3.17.0-rc4+ #14
Hardware name: HP ProLiant m300 Server Cartridge/, BIOS H02 01/30/2014
0000000000000009 ffff88007994b7d8 ffffffff816e7225 ffff88007994b820
ffff88007994b810 ffffffff8107e51d ffff88045fc56c00 ffff88046643ee90
ffffffff8338ccd0 0000000000000286 ffffffff81956629 ffff88007994b870
Call Trace:
[<ffffffff816e7225>] dump_stack+0x4d/0x66
[<ffffffff8107e51d>] warn_slowpath_common+0x7d/0xa0
[<ffffffff8107e58c>] warn_slowpath_fmt+0x4c/0x50
[<ffffffff81381e6e>] check_unmap+0x4ee/0x9e0
[<ffffffff813823bf>] debug_dma_unmap_page+0x5f/0x70
[<ffffffffa04546d8>] ioat_xor_val_self_test+0x498/0xcf0 [ioatdma]
[<ffffffff81204f0a>] ? kfree+0xda/0x2b0
[<ffffffffa044d510>] ? ioat_dma_setup_interrupts+0x120/0x2d0 [ioatdma]
[<ffffffffa0454f4e>] ioat3_dma_self_test+0x1e/0x30 [ioatdma]
[<ffffffffa044f904>] ioat_probe+0xf4/0x110 [ioatdma]
[<ffffffffa04550f8>] ioat3_dma_probe+0x198/0x3a0 [ioatdma]
[<ffffffffa044d18e>] ioat_pci_probe+0x11e/0x1b0 [ioatdma]
[<ffffffff81393a15>] local_pci_probe+0x45/0xa0
[<ffffffff81394be5>] ? pci_match_device+0xe5/0x110
[<ffffffff81394d29>] pci_device_probe+0xd9/0x130
[<ffffffff81462860>] driver_probe_device+0x90/0x3c0
[<ffffffff81462c63>] __driver_attach+0x93/0xa0
[<ffffffff81462bd0>] ? __device_attach+0x40/0x40
[<ffffffff8146080b>] bus_for_each_dev+0x6b/0xb0
[<ffffffff814622ce>] driver_attach+0x1e/0x20
[<ffffffff81461ed8>] bus_add_driver+0x188/0x260
[<ffffffffa0423000>] ? 0xffffffffa0423000
[<ffffffff81463734>] driver_register+0x64/0xf0
[<ffffffff813933a0>] __pci_register_driver+0x60/0x70
[<ffffffffa0423089>] ioat_init_module+0x89/0x1000 [ioatdma]
[<ffffffff8100212c>] do_one_initcall+0xbc/0x200
[<ffffffff811e8b22>] ? __vunmap+0xd2/0x120
[<ffffffff8111e73c>] load_module+0x14ec/0x1b50
[<ffffffff81119970>] ? store_uevent+0x40/0x40
[<ffffffff8111ef36>] SyS_finit_module+0x86/0xb0
[<ffffffff816f1469>] system_call_fastpath+0x16/0x1b
---[ end trace 1052ccbbc3db4d08 ]---
Mapped at:
[<ffffffff81380be1>] debug_dma_map_page+0x91/0x140
[<ffffffffa045440e>] ioat_xor_val_self_test+0x1ce/0xcf0 [ioatdma]
[<ffffffffa0454f4e>] ioat3_dma_self_test+0x1e/0x30 [ioatdma]
[<ffffffffa044f904>] ioat_probe+0xf4/0x110 [ioatdma]
[<ffffffffa04550f8>] ioat3_dma_probe+0x198/0x3a0 [ioatdma]
This happens because the current ioatdma DMA test code does not check the return
value of dma_map_page() calls with dma_mapping_error(). In addition, it was
noticed that mapping for the variable dest_dma is free'd before the last use.
This patch fixes these errors by initializing the dma_srcs[] array and checking
the returns with dma_mapping_error().
Signed-off-by: Prarit Bhargava <prarit@redhat.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2014-12-09 14:52:05 +05:30
..
2014-10-31 22:24:44 +01:00
2014-09-30 01:16:44 +02:00
2014-10-18 18:11:04 -07:00
2014-10-17 11:55:32 -04:00
2014-10-31 19:08:25 -07:00
2014-10-23 14:02:06 -04:00
2014-10-31 15:00:48 -07:00
2014-10-13 11:28:42 +02:00
2014-10-08 17:37:16 -04:00
2014-10-31 06:33:26 -04:00
2014-10-15 07:05:03 +02:00
2014-10-26 20:50:00 +01:00
2014-10-27 23:27:35 +01:00
2014-10-24 12:48:47 -07:00
2014-10-14 10:51:23 +02:00
2014-09-29 20:22:36 +09:00
2014-12-09 14:52:05 +05:30
2014-10-09 02:39:07 -04:00
2014-10-22 22:59:00 +02:00
2014-10-23 14:45:09 -07:00
2014-10-09 14:58:15 -04:00
2014-11-03 01:51:28 +09:00
2014-10-29 11:52:35 -07:00
2014-10-19 18:41:18 -07:00
2014-10-19 12:50:44 -07:00
2014-10-18 12:12:45 -07:00
2014-10-25 10:09:39 +08:00
2014-10-31 15:04:58 -07:00
2014-10-31 19:51:11 -07:00
2014-10-15 07:23:49 +02:00
2014-10-15 07:48:18 +02:00
2014-10-14 15:05:35 -04:00
2014-10-21 08:18:38 -07:00
2014-10-21 11:21:19 -07:00
2014-10-18 12:25:30 -07:00
2014-10-24 09:36:59 -02:00
2014-10-14 02:18:22 +02:00
2014-10-07 21:29:18 -04:00
2014-10-15 06:58:16 +02:00
2014-10-28 19:52:52 +11:00
2014-10-18 12:12:45 -07:00
2014-11-02 14:45:52 -08:00
2014-10-31 16:18:35 -04:00
2014-10-07 14:48:29 -04:00
2014-10-17 07:08:51 -04:00
2014-10-29 16:33:14 -07:00
2014-10-13 16:23:15 +02:00
2014-10-31 18:48:29 -07:00
2014-10-09 14:58:15 -04:00
2014-10-14 02:18:25 +02:00
2014-10-14 02:18:25 +02:00
2014-10-22 10:08:22 +02:00
2014-10-21 08:17:43 -07:00
2014-10-27 11:26:24 +00:00
2014-10-29 16:33:14 -07:00
2014-10-21 07:47:54 -07:00
2014-10-28 09:57:00 +01:00
2014-10-08 17:37:16 -04:00
2014-10-27 11:26:54 +00:00
2014-10-09 14:58:15 -04:00
2014-11-02 10:28:43 -08:00
2014-10-21 13:06:38 -07:00
2014-10-24 11:21:43 -07:00
2014-10-18 18:11:04 -07:00
2014-10-02 21:35:54 -07:00
2014-10-29 09:24:42 -07:00
2014-10-15 07:23:49 +02:00
2014-10-30 14:53:49 +02:00
2014-10-18 10:25:09 -07:00
2014-10-20 21:09:17 +02:00
2014-10-23 16:24:02 +01:00