From: Zhong Jinghua <zhongjinghua(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: 188217
----------------------------------------
Commits on our branch with check issues on first_minor had serious
confusion, resulting in duplicate checks in nbd_dev_add and
nbd_genl_connect.
So I revert the messy commit, backport lts patch.
Revert 881885f30261
[Backport] nbd: fix max value for 'first_minor'
Revert 4d759cee3f18
[Backport] Revert "Revert "block: nbd: add sanity check for first_minor""
Revert b95487500a4f
[Huawei] nbd: fix assignment error for first_minor in nbd_dev_add
Revert 93c4218b2f4d
[Backport] nbd: fix possible overflow on 'first_minor' in nbd_dev_add()
Revert 60141517d289
nbd: Fix use-after-free in blk_mq_free_rqs
Revert 98d3ad1d2589
nbd: add sanity check for first_minor
Signed-off-by: Zhong Jinghua <zhongjinghua(a)huawei.com>
Signed-off-by: Li Nan <linan122(a)huawei.com>
---
drivers/block/nbd.c | 24 +-----------------------
1 file changed, 1 insertion(+), 23 deletions(-)
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index fa08f380f5be..29884a0f1fca 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -1875,17 +1875,7 @@ static int nbd_dev_add(int index)
refcount_set(&nbd->refs, 1);
INIT_LIST_HEAD(&nbd->list);
disk->major = NBD_MAJOR;
-
- /* Too big first_minor can cause duplicate creation of
- * sysfs files/links, since index << part_shift might overflow, or
- * MKDEV() expect that the max bits of first_minor is 20.
- */
disk->first_minor = index << part_shift;
- if (disk->first_minor < index || disk->first_minor > MINORMASK) {
- err = -EINVAL;
- goto out_free_idr;
- }
-
disk->fops = &nbd_fops;
disk->private_data = nbd;
sprintf(disk->disk_name, "nbd%d", index);
@@ -1972,20 +1962,8 @@ static int nbd_genl_connect(struct sk_buff *skb, struct genl_info *info)
if (!netlink_capable(skb, CAP_SYS_ADMIN))
return -EPERM;
- if (info->attrs[NBD_ATTR_INDEX]) {
+ if (info->attrs[NBD_ATTR_INDEX])
index = nla_get_u32(info->attrs[NBD_ATTR_INDEX]);
-
- /*
- * Too big first_minor can cause duplicate creation of
- * sysfs files/links, since index << part_shift might
- * overflow, or MKDEV() expect that the max bits of
- * first_minor is 20.
- */
- if (index < 0 || index > MINORMASK >> part_shift) {
- printk(KERN_ERR "nbd: illegal input index %d\n", index);
- return -EINVAL;
- }
- }
if (!info->attrs[NBD_ATTR_SOCKETS]) {
printk(KERN_ERR "nbd: must specify at least one socket\n");
return -EINVAL;
--
2.39.2