diff options
author | Jens Axboe <axboe@kernel.dk> | 2021-11-01 13:56:09 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-11-02 13:57:20 +0100 |
commit | a22c00be90de188d36f4772ef7b268aa48d7010d (patch) | |
tree | d3365e21de21addda6532956d4590c8816a3df1b /block | |
parent | blk-mq: fix redundant check of !e expression (diff) | |
download | linux-a22c00be90de188d36f4772ef7b268aa48d7010d.tar.xz linux-a22c00be90de188d36f4772ef7b268aa48d7010d.zip |
block: assign correct tag before doing prefetch of request
Ensure that current tag is correctly assigned before attempting
to prefetch the first cacheline of the request.
Fixes: 92aff191cc5b ("block: prefetch request to be initialized")
Reported-and-tested-by: syzbot+cd20829ac44b92bf6ed0@syzkaller.appspotmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-mq.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c index 221d1b7d10d6..4787d5b74aa3 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -405,8 +405,8 @@ __blk_mq_alloc_requests_batch(struct blk_mq_alloc_data *data, for (i = 0; tag_mask; i++) { if (!(tag_mask & (1UL << i))) continue; - prefetch(tags->static_rqs[tag]); tag = tag_offset + i; + prefetch(tags->static_rqs[tag]); tag_mask &= ~(1UL << i); rq = blk_mq_rq_ctx_init(data, tags, tag, alloc_time_ns); rq_list_add(data->cached_rq, rq); |