Message ID | tencent_6E1A9EAE1BB04B3A1B592506BAEABB313308@qq.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [V2] blk-mq: fix warning in blk_mq_start_request | expand |
On Wed, Nov 08, 2023 at 02:59:40PM +0800, Edward Adam Davis wrote:
> Before call queue_rq(), initialize rq->state to MQ_RQ_IDLE.
Request should never be able to be allocated if they aren't in
MQ_RQ_IDLE. So papering over it here is not the right fix, we need
to figure out got it ends up being marked free in the bitmap while
not idle.
diff --git a/block/blk-mq.c b/block/blk-mq.c index e2d11183f62e..26f2921cbc50 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -2575,6 +2575,8 @@ static blk_status_t __blk_mq_issue_directly(struct blk_mq_hw_ctx *hctx, * Any other error (busy), just add it to our list as we * previously would have done. */ + if (READ_ONCE(rq->state)) + WRITE_ONCE(rq->state, MQ_RQ_IDLE); ret = q->mq_ops->queue_rq(hctx, &bd); switch (ret) { case BLK_STS_OK:
Before call queue_rq(), initialize rq->state to MQ_RQ_IDLE. Reported-and-tested-by: syzbot+fcc47ba2476570cbbeb0@syzkaller.appspotmail.com Signed-off-by: Edward Adam Davis <eadavis@qq.com> --- block/blk-mq.c | 2 ++ 1 file changed, 2 insertions(+)