]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/s390/cio/ccwgroup.c
s390/ccwgroup: obtain extra reference for asynchronous processing
[karo-tx-linux.git] / drivers / s390 / cio / ccwgroup.c
index dfd7bc681c255d62f07b6471048a8342388c78bd..040e643746aa5be7761a003869ef6c8395b124d6 100644 (file)
@@ -227,6 +227,7 @@ static void ccwgroup_ungroup_workfn(struct work_struct *work)
                container_of(work, struct ccwgroup_device, ungroup_work);
 
        ccwgroup_ungroup(gdev);
+       put_device(&gdev->dev);
 }
 
 static void ccwgroup_release(struct device *dev)
@@ -412,8 +413,10 @@ static int ccwgroup_notifier(struct notifier_block *nb, unsigned long action,
 {
        struct ccwgroup_device *gdev = to_ccwgroupdev(data);
 
-       if (action == BUS_NOTIFY_UNBIND_DRIVER)
+       if (action == BUS_NOTIFY_UNBIND_DRIVER) {
+               get_device(&gdev->dev);
                schedule_work(&gdev->ungroup_work);
+       }
 
        return NOTIFY_OK;
 }