Qian Cai
8cf6650421
iommu/amd: fix a crash in iova_magazine_free_pfns
...
The commit b3aa14f022 ("iommu: remove the mapping_error dma_map_ops
method") incorrectly changed the checking from dma_ops_alloc_iova() in
map_sg() causes a crash under memory pressure as dma_ops_alloc_iova()
never return DMA_MAPPING_ERROR on failure but 0, so the error handling
is all wrong.
kernel BUG at drivers/iommu/iova.c:801!
Workqueue: kblockd blk_mq_run_work_fn
RIP: 0010:iova_magazine_free_pfns+0x7d/0xc0
Call Trace:
free_cpu_cached_iovas+0xbd/0x150
alloc_iova_fast+0x8c/0xba
dma_ops_alloc_iova.isra.6+0x65/0xa0
map_sg+0x8c/0x2a0
scsi_dma_map+0xc6/0x160
pqi_aio_submit_io+0x1f6/0x440 [smartpqi]
pqi_scsi_queue_command+0x90c/0xdd0 [smartpqi]
scsi_queue_rq+0x79c/0x1200
blk_mq_dispatch_rq_list+0x4dc/0xb70
blk_mq_sched_dispatch_requests+0x249/0x310
__blk_mq_run_hw_queue+0x128/0x200
blk_mq_run_work_fn+0x27/0x30
process_one_work+0x522/0xa10
worker_thread+0x63/0x5b0
kthread+0x1d2/0x1f0
ret_from_fork+0x22/0x40
Fixes: b3aa14f022 ("iommu: remove the mapping_error dma_map_ops method")
Signed-off-by: Qian Cai <cai@lca.pw >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2019-07-21 09:57:13 -07:00
..
2019-05-24 17:36:47 +02:00
2019-07-19 09:45:58 -07:00
2019-07-12 12:24:03 -07:00
2019-06-13 10:35:55 +02:00
2019-07-09 10:59:26 -07:00
2019-07-15 11:06:27 -07:00
2019-07-09 12:34:26 -07:00
2019-07-19 10:42:02 -07:00
2019-07-18 11:05:25 -07:00
2019-07-06 21:44:25 +02:00
2019-07-19 17:13:56 -07:00
2019-06-14 14:20:46 -06:00
2019-07-15 11:03:02 -03:00
2019-07-17 10:07:48 -07:00
2019-07-10 11:05:26 +02:00
2019-05-30 11:26:35 -07:00
2019-07-11 15:36:02 -07:00
2019-07-18 09:49:30 +02:00
2019-07-18 09:49:30 +02:00
2019-07-19 12:23:37 -07:00
2019-07-19 10:42:02 -07:00
2019-05-24 17:27:11 +02:00
2019-06-19 17:09:55 +02:00
2019-07-17 09:55:43 -07:00
2019-07-19 10:42:02 -07:00
2019-06-27 10:24:47 -07:00
2019-05-30 11:29:53 -07:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:35 -07:00
2019-07-19 17:13:56 -07:00
2019-07-16 19:23:25 -07:00
2019-06-19 17:09:11 +02:00
2019-07-17 13:05:21 -07:00
2019-07-19 12:29:43 -07:00
2019-07-15 09:42:32 -07:00
2019-06-05 17:37:07 +02:00
2019-07-18 17:08:07 -07:00
2019-07-19 17:13:56 -07:00
2019-06-29 21:08:14 -07:00
2019-07-12 14:42:05 -07:00
2019-07-15 21:10:39 -07:00
2019-07-09 09:04:31 -07:00
2019-07-09 12:34:26 -07:00
2019-06-05 17:37:06 +02:00
2019-07-12 12:24:03 -07:00
2019-07-20 10:04:58 -07:00
2019-07-20 12:22:30 -07:00
2019-07-21 09:57:13 -07:00
2019-07-11 15:38:21 -07:00
2019-07-10 11:04:17 +02:00
2019-07-15 11:10:31 -07:00
2019-07-09 08:59:39 -07:00
2019-06-21 03:14:30 -06:00
2019-07-13 16:08:36 -07:00
2019-07-14 16:36:51 -07:00
2019-06-05 17:37:17 +02:00
2019-07-18 14:49:33 -07:00
2019-07-11 10:55:49 -07:00
2019-07-20 09:34:55 -07:00
2019-07-11 18:11:21 -07:00
2019-07-11 15:14:01 -07:00
2019-07-15 20:18:40 -07:00
2019-07-19 10:42:02 -07:00
2019-07-11 18:11:21 -07:00
2019-07-15 09:20:28 -03:00
2019-07-19 10:06:06 -07:00
2019-07-02 12:00:50 -07:00
2019-07-21 09:46:59 -07:00
2019-07-19 09:45:58 -07:00
2019-07-15 21:20:52 -07:00
2019-07-12 12:24:03 -07:00
2019-07-17 11:26:09 -07:00
2019-07-15 20:44:49 -07:00
2019-07-04 22:01:59 -04:00
2019-06-08 12:52:42 -07:00
2019-07-09 12:34:26 -07:00
2019-07-21 09:46:59 -07:00
2019-07-09 12:34:26 -07:00
2019-07-15 09:20:27 -03:00
2019-07-01 15:04:59 +02:00
2019-07-13 15:02:27 -07:00
2019-07-17 19:07:58 +03:00
2019-07-15 11:03:02 -03:00
2019-07-15 21:06:15 -07:00
2019-07-11 15:08:58 +02:00
2019-07-16 19:23:24 -07:00
2019-05-30 11:26:39 -07:00
2019-06-15 13:43:06 -07:00
2019-07-09 08:57:45 -07:00
2019-07-17 08:58:04 -07:00
2019-06-08 17:40:28 +02:00
2019-07-15 20:18:40 -07:00
2019-07-17 11:44:41 -07:00
2019-07-19 17:13:56 -07:00
2019-07-17 10:03:50 -07:00
2019-07-20 10:04:58 -07:00
2019-05-24 17:36:45 +02:00
2019-07-20 10:04:58 -07:00
2019-07-19 17:19:24 -07:00
2019-07-05 08:15:08 +02:00
2019-07-12 12:24:03 -07:00
2019-06-05 17:36:37 +02:00
2019-06-25 08:05:34 +03:00
2019-07-16 12:21:41 -07:00
2019-07-11 15:14:01 -07:00
2019-06-05 17:36:37 +02:00
2019-07-18 09:32:28 -07:00
2019-07-12 12:24:03 -07:00
2019-07-19 17:05:08 -07:00
2019-06-19 17:09:55 +02:00
2019-07-19 10:42:02 -07:00
2019-06-19 17:09:07 +02:00
2019-07-17 11:23:13 -07:00
2019-07-17 11:26:09 -07:00
2019-07-16 09:25:04 -07:00
2019-07-19 10:42:02 -07:00
2019-06-24 05:22:31 +02:00
2019-05-24 17:39:00 +02:00
2019-05-30 11:26:32 -07:00
2019-07-15 11:03:02 -03:00
2019-07-15 08:49:11 +02:00
2019-07-19 11:41:26 -07:00
2019-06-12 14:23:50 +02:00
2019-06-12 14:23:50 +02:00