mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 05:31:08 -04: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 23ceb5b771 (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 <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
This commit is contained in:
1 parent
4db70f73e5
commit
f4fa3424c6
1 file changed
+5
-3
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user