Merge tag 'for-5.18/drivers-2022-04-02' of git://git.kernel.dk/linux-block
Pull block driver fix from Jens Axboe: "Got two reports on nbd spewing warnings on load now, which is a regression from a commit that went into your tree yesterday. Revert the problematic change for now" * tag 'for-5.18/drivers-2022-04-02' of git://git.kernel.dk/linux-block: Revert "nbd: fix possible overflow on 'first_minor' in nbd_dev_add()"
This commit is contained in:
@@ -1800,6 +1800,17 @@ static struct nbd_device *nbd_dev_add(int index, unsigned int refs)
|
||||
refcount_set(&nbd->refs, 0);
|
||||
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_work;
|
||||
}
|
||||
|
||||
disk->minors = 1 << part_shift;
|
||||
disk->fops = &nbd_fops;
|
||||
disk->private_data = nbd;
|
||||
@@ -1904,19 +1915,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;
|
||||
|
||||
Reference in New Issue
Block a user