dm: fix a crash if blk_alloc_disk fails
If blk_alloc_disk fails, the variable md->disk is set to an error value. cleanup_mapped_device will see that md->disk is non-NULL and it will attempt to access it, causing a crash on this statement "md->disk->private_data = NULL;". Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Reported-by: Chenyuan Yang <chenyuan0y@gmail.com> Closes: https://marc.info/?l=dm-devel&m=172824125004329&w=2 Cc: stable@vger.kernel.org Reviewed-by: Nitesh Shetty <nj.shetty@samsung.com>
This commit is contained in:
parent
8e929cb546
commit
fed13a5478
@ -2290,8 +2290,10 @@ static struct mapped_device *alloc_dev(int minor)
|
|||||||
* override accordingly.
|
* override accordingly.
|
||||||
*/
|
*/
|
||||||
md->disk = blk_alloc_disk(NULL, md->numa_node_id);
|
md->disk = blk_alloc_disk(NULL, md->numa_node_id);
|
||||||
if (IS_ERR(md->disk))
|
if (IS_ERR(md->disk)) {
|
||||||
|
md->disk = NULL;
|
||||||
goto bad;
|
goto bad;
|
||||||
|
}
|
||||||
md->queue = md->disk->queue;
|
md->queue = md->disk->queue;
|
||||||
|
|
||||||
init_waitqueue_head(&md->wait);
|
init_waitqueue_head(&md->wait);
|
||||||
|
Loading…
Reference in New Issue
Block a user