s390/dasd: fix double module refcount decrement
[linux-2.6-microblaze.git] / drivers / s390 / block / dasd.c
index fdb6cb8..2f3adf5 100644 (file)
@@ -3503,12 +3503,11 @@ int dasd_generic_set_online(struct ccw_device *cdev,
                dasd_delete_device(device);
                return -EINVAL;
        }
+       device->base_discipline = base_discipline;
        if (!try_module_get(discipline->owner)) {
-               module_put(base_discipline->owner);
                dasd_delete_device(device);
                return -EINVAL;
        }
-       device->base_discipline = base_discipline;
        device->discipline = discipline;
 
        /* check_device will allocate block device if necessary */
@@ -3516,8 +3515,6 @@ int dasd_generic_set_online(struct ccw_device *cdev,
        if (rc) {
                dev_warn(dev, "Setting the DASD online with discipline %s failed with rc=%i\n",
                         discipline->name, rc);
-               module_put(discipline->owner);
-               module_put(base_discipline->owner);
                dasd_delete_device(device);
                return rc;
        }