s390/ccwgroup: use BUS_NOTIFY_UNBOUND_DRIVER to trigger ungrouping
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>
This commit is contained in:
parent
428b7f5983
commit
17c0b86e5f
@ -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 {
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user