Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 93803e01 authored by Jens Axboe's avatar Jens Axboe
Browse files

cfq-iosched: fix race in cfq_set_request()



We need to hold the queue lock over the reference increment,
it's not atomic anymore.

Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
parent da527770
Loading
Loading
Loading
Loading
+1 −2
Original line number Original line Diff line number Diff line
@@ -3675,12 +3675,11 @@ new_queue:


	cfqq->allocated[rw]++;
	cfqq->allocated[rw]++;


	spin_unlock_irqrestore(q->queue_lock, flags);

	cfqq->ref++;
	cfqq->ref++;
	rq->elevator_private[0] = cic;
	rq->elevator_private[0] = cic;
	rq->elevator_private[1] = cfqq;
	rq->elevator_private[1] = cfqq;
	rq->elevator_private[2] = cfq_ref_get_cfqg(cfqq->cfqg);
	rq->elevator_private[2] = cfq_ref_get_cfqg(cfqq->cfqg);
	spin_unlock_irqrestore(q->queue_lock, flags);
	return 0;
	return 0;


queue_fail:
queue_fail: