On Mon, Jun 19, 2017 at 03:32:09PM +0200, Paolo Valente wrote: > > static void bfq_finish_request(struct request *rq) > > { > > - struct bfq_queue *bfqq = RQ_BFQQ(rq); > > - struct bfq_data *bfqd = bfqq->bfqd; > > + struct bfq_queue *bfqq; > > + struct bfq_data *bfqd; > > + > > + if (!rq->elv.icq) > > + return; > > + > > If this is a rq dispatched from a bfqq (or even a request still in the > scheduler), then just exiting here will break bfq state seriously. > However, I guess that this case can never occur. It is a request for which we didn't manage to allocate the ioc. Previously those wouldn't have REQ_ELVPRIV set and thus we wouldn't call into the finish method. Now they do and the finish method needs to handle those just like the init method.