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

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

block: fix oops on !disk->queue and sysfs discard alignment display



Eric Dumazet reports:

----

At boot, I have a crash in part_discard_alignment_show+0x1b/0x50

CR2 : 000006ac

fault in : mov    0x2c(%rcx),%edx

I suspect commit 23ceb5b7 (block: Remove extra
discard_alignment from hd_struct) being in fault

----

Not quite known how ->queue can be NULL while the sysfs entry
exists, but lets play it safe and check for a NULL queue.
The rest of the sysfs show strategies in check.c do not dereference
disk->queue.

Reported-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
parent 4db70f73
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -256,10 +256,12 @@ ssize_t part_discard_alignment_show(struct device *dev,
{
{
	struct hd_struct *p = dev_to_part(dev);
	struct hd_struct *p = dev_to_part(dev);
	struct gendisk *disk = dev_to_disk(dev);
	struct gendisk *disk = dev_to_disk(dev);
	unsigned int alignment = 0;


	return sprintf(buf, "%u\n",
	if (disk->queue)
			queue_limit_discard_alignment(&disk->queue->limits,
		alignment = queue_limit_discard_alignment(&disk->queue->limits,
							p->start_sect));
								p->start_sect);
	return sprintf(buf, "%u\n", alignment);
}
}


ssize_t part_stat_show(struct device *dev,
ssize_t part_stat_show(struct device *dev,