Commit 312f76c4 authored by Zhong Jinghua's avatar Zhong Jinghua Committed by Li Nan
Browse files

block: Fix minor range check in device_add_disk()



hulk inclusion
category: bugfix
bugzilla: 188733

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

Checks added in patch:
51901d95c47e("block: check minor range in device_add_disk()") ignore the
problem of first_minore < 0 and disk->minors < 0.

Fix it by adding first_minore < 0 and disk->minors < 0 check.

Signed-off-by: default avatarZhong Jinghua <zhongjinghua@huawei.com>
Signed-off-by: default avatarLi Nan <linan122@huawei.com>
parent 5692da2e
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -800,8 +800,9 @@ static int __device_add_disk(struct device *parent, struct gendisk *disk,
	WARN_ON(!disk->minors &&
		!(disk->flags & (GENHD_FL_EXT_DEVT | GENHD_FL_HIDDEN)));

	if (disk->minors != 0 &&
		disk->first_minor + disk->minors > MINORMASK + 1)
	if (disk->minors != 0 && (disk->first_minor > MINORMASK ||
		disk->minors > (1U << MINORBITS) ||
		disk->first_minor + disk->minors > (1U << MINORBITS)))
		goto out_exit_elevator;
	retval = blk_alloc_devt(&disk->part0, &devt);
	if (retval)