Bart Van Assche
8c7a8d1c4b
lib/scatterlist: Fix chaining support in sgl_alloc_order()
This patch avoids that workloads with large block sizes (megabytes)
can trigger the following call stack with the ib_srpt driver (that
driver is the only driver that chains scatterlists allocated by
sgl_alloc_order()):
BUG: Bad page state in process kworker/0:1H pfn:2423a78
page:fffffb03d08e9e00 count:-3 mapcount:0 mapping: (null) index:0x0
flags: 0x57ffffc0000000()
raw: 0057ffffc0000000 0000000000000000 0000000000000000 fffffffdffffffff
raw: dead000000000100 dead000000000200 0000000000000000 0000000000000000
page dumped because: nonzero _count
CPU: 0 PID: 733 Comm: kworker/0:1H Tainted: G I 4.15.0-rc7.bart+ #1
Hardware name: HP ProLiant DL380 G7, BIOS P67 08/16/2015
Workqueue: ib-comp-wq ib_cq_poll_work [ib_core]
Call Trace:
dump_stack+0x5c/0x83
bad_page+0xf5/0x10f
get_page_from_freelist+0xa46/0x11b0
__alloc_pages_nodemask+0x103/0x290
sgl_alloc_order+0x101/0x180
target_alloc_sgl+0x2c/0x40 [target_core_mod]
srpt_alloc_rw_ctxs+0x173/0x2d0 [ib_srpt]
srpt_handle_new_iu+0x61e/0x7f0 [ib_srpt]
__ib_process_cq+0x55/0xa0 [ib_core]
ib_cq_poll_work+0x1b/0x60 [ib_core]
process_one_work+0x141/0x340
worker_thread+0x47/0x3e0
kthread+0xf5/0x130
ret_from_fork+0x1f/0x30
Fixes: e80a0af475 ("lib/scatterlist: Introduce sgl_alloc() and sgl_free()")
Reported-by: Laurence Oberman <loberman@redhat.com>
Tested-by: Laurence Oberman <loberman@redhat.com>
Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
Cc: Nicholas A. Bellinger <nab@linux-iscsi.org>
Cc: Laurence Oberman <loberman@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-01-19 12:31:03 -07:00
..
2017-11-02 11:10:55 +01:00
2017-12-11 14:32:56 +01:00
2017-11-14 16:54:12 -08:00
2017-11-28 16:54:45 +01:00
2017-12-04 13:57:03 -08:00
2017-11-29 13:10:25 -08:00
2017-11-27 12:36:45 -08:00
2017-12-11 14:32:56 +01:00
2017-11-15 11:56:19 -08:00
2018-01-17 08:41:07 -07:00
2017-11-04 09:26:51 +09:00
2017-12-04 17:15:20 +00:00
2017-11-14 15:32:19 -08:00
2017-12-11 17:01:59 -08:00
2017-11-17 20:04:24 -08:00
2017-11-23 16:29:05 +01:00
2017-11-22 00:00:14 +01:00
2017-11-16 12:47:46 -08:00
2017-11-16 12:47:46 -08:00
2017-11-29 18:40:42 -08:00
2017-11-13 01:41:39 +01:00
2017-11-02 11:10:55 +01:00
2017-12-15 09:53:04 +05:30
2017-11-17 14:58:01 -08:00
2017-11-15 13:46:33 -08:00
2017-11-02 11:10:55 +01:00
2017-11-13 21:14:07 -08:00
2017-11-13 17:56:58 -08:00
2017-12-10 08:26:59 -08:00
2017-11-02 11:10:55 +01:00
2017-11-16 09:10:59 -08:00
2017-12-02 22:41:43 +01:00
2017-12-14 16:35:20 -08:00
2017-11-21 15:57:07 -08:00
2017-11-15 13:35:43 -08:00
2017-11-28 16:56:26 +01:00
2017-11-30 13:12:44 -08:00
2017-11-17 20:16:20 -08:00
2017-12-04 07:14:30 -05:00
2017-12-12 23:27:04 +01:00
2017-11-19 08:04:41 -10:00
2017-11-13 01:34:14 +01:00
2017-12-02 11:15:14 +00:00
2017-12-16 13:43:08 -08:00
2017-11-21 16:35:54 -08:00
2017-12-06 10:53:02 -08:00
2017-11-26 14:39:20 -08:00
2017-11-21 15:57:09 -08:00
2017-11-14 18:09:31 -08:00
2018-01-05 08:50:12 -07:00
2017-11-13 17:56:58 -08:00
2017-11-15 13:39:18 -08:00
2017-11-02 11:10:55 +01:00
2018-01-17 09:46:54 -07:00
2017-12-08 13:18:47 -08:00
2017-11-16 16:05:01 -08:00
2017-11-21 15:57:07 -08:00
2017-11-15 13:46:33 -08:00
2017-11-21 15:57:07 -08:00
2017-12-17 13:54:31 -08:00
2017-12-11 13:43:27 +01:00
2017-11-27 13:05:09 -08:00
2017-12-15 15:46:19 -05:00
2017-11-21 15:57:09 -08:00
2017-11-21 15:57:07 -08:00
2017-11-13 12:10:24 -08:00
2017-11-17 09:51:57 -08:00
2018-01-17 17:55:14 +01:00
2017-11-16 09:10:59 -08:00
2017-12-13 15:01:47 -05:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-16 09:10:59 -08:00
2017-12-14 18:25:03 -08:00
2017-11-17 16:10:04 -08:00
2017-11-15 10:56:56 -08:00
2017-11-13 21:14:07 -08:00
2017-11-30 16:50:43 +01:00
2017-12-11 17:26:03 -08:00
2017-11-02 11:10:55 +01:00
2017-11-15 13:37:15 -08:00
2017-11-21 15:57:07 -08:00
2017-11-16 13:06:27 -08:00
2017-11-22 21:09:18 -10:00
2017-11-17 16:56:17 -08:00
2017-11-13 17:56:58 -08:00
2017-11-16 09:15:57 -08:00
2017-11-17 20:14:10 -08:00
2017-11-16 16:05:01 -08:00
2017-11-17 20:12:08 -08:00
2017-11-25 08:37:16 -10:00
2017-12-15 11:29:43 -05:00
2017-11-17 20:21:44 -08:00
2017-12-15 12:51:42 -08:00
2017-11-14 16:54:12 -08:00
2017-11-30 15:29:44 -08:00
2017-11-10 21:33:51 +00:00
2017-11-02 11:10:55 +01:00
2017-12-15 12:59:48 -08:00
2018-01-19 12:31:03 -07:00
2017-11-29 10:24:57 +01:00
2017-11-17 14:31:27 -08:00
2017-11-16 09:10:59 -08:00
2017-11-28 16:00:50 +01:00
2017-11-02 11:10:55 +01:00
2017-12-13 12:28:43 +01:00
2017-11-21 15:57:07 -08:00
2017-11-14 16:47:47 -08:00
2017-12-02 21:31:03 -05:00
2017-11-20 21:50:24 -10:00
2017-12-14 21:01:40 +02:00
2017-11-16 09:10:59 -08:00
2017-11-16 09:10:59 -08:00
2017-11-21 15:57:07 -08:00
2017-12-15 11:32:09 -08:00
2017-11-02 11:10:55 +01:00
2017-11-13 01:40:52 +01:00
2017-11-28 15:17:49 +01:00