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

Commit fb8ec18c authored by Jens Axboe's avatar Jens Axboe
Browse files

block: fix oops in blk_queue_io_stat()



Some initial probe requests don't have disk->queue mapped yet, so we
can't rely on a non-NULL queue in blk_queue_io_stat(). Wrap it in
blk_do_io_stat().

Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
parent 45c82b5a
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ static void drive_stat_acct(struct request *rq, int new_io)
	int rw = rq_data_dir(rq);
	int cpu;

	if (!blk_fs_request(rq) || !disk || !blk_queue_io_stat(disk->queue))
	if (!blk_fs_request(rq) || !disk || !blk_do_io_stat(disk->queue))
		return;

	cpu = part_stat_lock();
@@ -1667,7 +1667,7 @@ static void blk_account_io_completion(struct request *req, unsigned int bytes)
{
	struct gendisk *disk = req->rq_disk;

	if (!disk || !blk_queue_io_stat(disk->queue))
	if (!disk || !blk_do_io_stat(disk->queue))
		return;

	if (blk_fs_request(req)) {
@@ -1686,7 +1686,7 @@ static void blk_account_io_done(struct request *req)
{
	struct gendisk *disk = req->rq_disk;

	if (!disk || !blk_queue_io_stat(disk->queue))
	if (!disk || !blk_do_io_stat(disk->queue))
		return;

	/*
+8 −0
Original line number Diff line number Diff line
@@ -108,4 +108,12 @@ static inline int blk_cpu_to_group(int cpu)
#endif
}

static inline int blk_do_io_stat(struct request_queue *q)
{
	if (q)
		return blk_queue_io_stat(q);

	return 0;
}

#endif