s390/ccwgroup: use BUS_NOTIFY_UNBOUND_DRIVER to trigger ungrouping
authorJulian Wiedmann <jwi@linux.ibm.com>
Wed, 5 May 2021 08:28:21 +0000 (10:28 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Mon, 7 Jun 2021 15:07:00 +0000 (17:07 +0200)
ccwgroup_notifier() currently listens for BUS_NOTIFY_UNBIND_DRIVER
events, and triggers an ungrouping for the affected device.

Looking at __device_release_driver(), we can wait for a little longer
until the driver has been fully unbound and eg. bus->remove() has been
called. So listen for BUS_NOTIFY_UNBOUND_DRIVER instead. Due to locking
the current code should work just fine, but this clarifies our intent.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Reviewed-by: Vineeth Vijayan <vneethv@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/ccwgroup.h
drivers/s390/cio/ccwgroup.c

index ad3acb1e882bb90ac20562951be8599db166d98c..20f169b6db4ec166d11eee7ca4ad707ec34edd58 100644 (file)
@@ -11,8 +11,7 @@ struct ccw_driver;
  * @count: number of attached slave devices
  * @dev: embedded device structure
  * @cdev: variable number of slave devices, allocated as needed
- * @ungroup_work: work to be done when a ccwgroup notifier has action
- *     type %BUS_NOTIFY_UNBIND_DRIVER
+ * @ungroup_work: used to ungroup the ccwgroup device
  */
 struct ccwgroup_device {
        enum {
index 7e5ceea62731f092ac3e6eab33aa742828b44c95..9748165e08e9622523579087cec8ff76f697f8ac 100644 (file)
@@ -401,7 +401,7 @@ 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_UNBOUND_DRIVER) {
                get_device(&gdev->dev);
                schedule_work(&gdev->ungroup_work);
        }