mirror of
https://github.com/torvalds/linux
synced 2024-09-06 18:01:05 +00:00
axonram: Fix gendisk handling
It is invalid to call del_gendisk() when disk->queue is NULL. Fix error handling in axon_ram_probe() to avoid doing that. Also del_gendisk() does not drop a reference to gendisk allocated by alloc_disk(). That has to be done by put_disk(). Add that call where needed. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
79bd99596b
commit
672a2c87c8
|
@ -274,7 +274,9 @@ static int axon_ram_probe(struct platform_device *device)
|
||||||
if (bank->disk->major > 0)
|
if (bank->disk->major > 0)
|
||||||
unregister_blkdev(bank->disk->major,
|
unregister_blkdev(bank->disk->major,
|
||||||
bank->disk->disk_name);
|
bank->disk->disk_name);
|
||||||
del_gendisk(bank->disk);
|
if (bank->disk->flags & GENHD_FL_UP)
|
||||||
|
del_gendisk(bank->disk);
|
||||||
|
put_disk(bank->disk);
|
||||||
}
|
}
|
||||||
device->dev.platform_data = NULL;
|
device->dev.platform_data = NULL;
|
||||||
if (bank->io_addr != 0)
|
if (bank->io_addr != 0)
|
||||||
|
@ -299,6 +301,7 @@ axon_ram_remove(struct platform_device *device)
|
||||||
device_remove_file(&device->dev, &dev_attr_ecc);
|
device_remove_file(&device->dev, &dev_attr_ecc);
|
||||||
free_irq(bank->irq_id, device);
|
free_irq(bank->irq_id, device);
|
||||||
del_gendisk(bank->disk);
|
del_gendisk(bank->disk);
|
||||||
|
put_disk(bank->disk);
|
||||||
iounmap((void __iomem *) bank->io_addr);
|
iounmap((void __iomem *) bank->io_addr);
|
||||||
kfree(bank);
|
kfree(bank);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue