kyber: fix out of bounds access when preempted
[linux-2.6-microblaze.git] / block / mq-deadline.c
index f3631a2..8eea2cb 100644 (file)
@@ -461,10 +461,9 @@ static int dd_request_merge(struct request_queue *q, struct request **rq,
        return ELEVATOR_NO_MERGE;
 }
 
-static bool dd_bio_merge(struct blk_mq_hw_ctx *hctx, struct bio *bio,
+static bool dd_bio_merge(struct request_queue *q, struct bio *bio,
                unsigned int nr_segs)
 {
-       struct request_queue *q = hctx->queue;
        struct deadline_data *dd = q->elevator->elevator_data;
        struct request *free = NULL;
        bool ret;
@@ -500,11 +499,8 @@ static void dd_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
 
        trace_block_rq_insert(rq);
 
-       if (at_head || blk_rq_is_passthrough(rq)) {
-               if (at_head)
-                       list_add(&rq->queuelist, &dd->dispatch);
-               else
-                       list_add_tail(&rq->queuelist, &dd->dispatch);
+       if (at_head) {
+               list_add(&rq->queuelist, &dd->dispatch);
        } else {
                deadline_add_rq_rb(dd, rq);