Commit ee776389 authored by Li Lingfeng's avatar Li Lingfeng Committed by Yongqiang Liu
Browse files

dm: add disk before alloc dax

hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I78SWJ


CVE: NA

-------------------------------

In dm_create(), alloc_dev() may trigger panic if alloc_dax() fail since
del_gendisk() will be called with add_disk() wasn't called before.

Call add_disk() before alloc_dax() to avoid it.

Signed-off-by: default avatarLi Lingfeng <lilingfeng3@huawei.com>
Reviewed-by: default avatarHou Tao <houtao1@huawei.com>
Signed-off-by: default avatarYongqiang Liu <liuyongqiang13@huawei.com>
parent c7ca9c06
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -2009,6 +2009,8 @@ static struct mapped_device *alloc_dev(int minor)
	md->disk->private_data = md;
	sprintf(md->disk->disk_name, "dm-%d", minor);

	add_disk_no_queue_reg(md->disk);

	if (IS_ENABLED(CONFIG_DAX_DRIVER)) {
		dax_dev = alloc_dax(md, md->disk->disk_name, &dm_dax_ops);
		if (!dax_dev)
@@ -2016,7 +2018,6 @@ static struct mapped_device *alloc_dev(int minor)
	}
	md->dax_dev = dax_dev;

	add_disk_no_queue_reg(md->disk);
	format_dev_t(md->name, MKDEV(_major, minor));

	md->wq = alloc_workqueue("kdmflush", WQ_MEM_RECLAIM, 0);