mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-10 07:10:27 +00:00
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 23ceb5b7719e9276d4 (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: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
This commit is contained in:
parent
4db70f73e5
commit
f4fa3424c6
@ -256,10 +256,12 @@ ssize_t part_discard_alignment_show(struct device *dev,
|
||||
{
|
||||
struct hd_struct *p = dev_to_part(dev);
|
||||
struct gendisk *disk = dev_to_disk(dev);
|
||||
unsigned int alignment = 0;
|
||||
|
||||
return sprintf(buf, "%u\n",
|
||||
queue_limit_discard_alignment(&disk->queue->limits,
|
||||
p->start_sect));
|
||||
if (disk->queue)
|
||||
alignment = queue_limit_discard_alignment(&disk->queue->limits,
|
||||
p->start_sect);
|
||||
return sprintf(buf, "%u\n", alignment);
|
||||
}
|
||||
|
||||
ssize_t part_stat_show(struct device *dev,
|
||||
|
Loading…
x
Reference in New Issue
Block a user