s390/ccwgroup: require at least one ccw device
authorJulian Wiedmann <jwi@linux.vnet.ibm.com>
Tue, 30 Jan 2018 13:39:34 +0000 (14:39 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 10 Apr 2018 05:38:57 +0000 (07:38 +0200)
ccwgroup_create_dev() derives the gdev's device name from gdev->cdev[0],
so make sure that this reference is valid.

For robustness only, all current ccwgroup drivers get this right.

Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Acked-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/cio/ccwgroup.c

index bfec148..5535312 100644 (file)
@@ -323,6 +323,9 @@ int ccwgroup_create_dev(struct device *parent, struct ccwgroup_driver *gdrv,
        struct ccw_dev_id dev_id;
        int rc, i;
 
+       if (num_devices < 1)
+               return -EINVAL;
+
        gdev = kzalloc(sizeof(*gdev) + num_devices * sizeof(gdev->cdev[0]),
                       GFP_KERNEL);
        if (!gdev)
@@ -375,7 +378,7 @@ int ccwgroup_create_dev(struct device *parent, struct ccwgroup_driver *gdrv,
                goto error;
        }
        /* Check if the devices are bound to the required ccw driver. */
-       if (gdev->count && gdrv && gdrv->ccw_driver &&
+       if (gdrv && gdrv->ccw_driver &&
            gdev->cdev[0]->drv != gdrv->ccw_driver) {
                rc = -EINVAL;
                goto error;