On Sun, Oct 23, 2022 at 12:07:26AM +0800, John Garry wrote: > Function blk_mq_alloc_request_hctx() is missing zeroing/init of rq->bio, > biotail, __sector, and __data_len members, which blk_mq_alloc_request() > has. > > Move init'ing of those members to common blk_mq_rq_ctx_init(). > > Fixes: 1f5bd336b9150 ("blk-mq: add blk_mq_alloc_request_hctx") > Suggested-by: Bart Van Assche <bvanassche@xxxxxxx> > Signed-off-by: John Garry <john.garry@xxxxxxxxxx> > > diff --git a/block/blk-mq.c b/block/blk-mq.c > index 8070b6c10e8d..260adeb2e455 100644 > --- a/block/blk-mq.c > +++ b/block/blk-mq.c > @@ -402,6 +402,10 @@ static struct request *blk_mq_rq_ctx_init(struct blk_mq_alloc_data *data, > } > } > > + rq->__data_len = 0; > + rq->__sector = (sector_t) -1; > + rq->bio = rq->biotail = NULL; > + > return rq; > } > > @@ -591,9 +595,6 @@ struct request *blk_mq_alloc_request(struct request_queue *q, blk_opf_t opf, > if (!rq) > goto out_queue_exit; > } > - rq->__data_len = 0; > - rq->__sector = (sector_t) -1; > - rq->bio = rq->biotail = NULL; This patch looks not good, why do you switch to initialize the three fields twice in fast path? BTW, we know blk_mq_alloc_request_hctx() has big trouble, so please avoid to extend it to other use cases. Thanks, Ming