提交 d305ef5d 编写于 作者: D Daniel Ritz 提交者: Linus Torvalds

[PATCH] driver core: add helper device_is_registered()

add the helper and use it instead of open coding the klist_node_attached() check
(which is a layering violation IMHO)

idea by Alan Stern.
Signed-off-by: NDaniel Ritz <daniel.ritz@gmx.ch>
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 4c898c7f
...@@ -437,7 +437,7 @@ __ccwgroup_get_gdev_by_cdev(struct ccw_device *cdev) ...@@ -437,7 +437,7 @@ __ccwgroup_get_gdev_by_cdev(struct ccw_device *cdev)
if (cdev->dev.driver_data) { if (cdev->dev.driver_data) {
gdev = (struct ccwgroup_device *)cdev->dev.driver_data; gdev = (struct ccwgroup_device *)cdev->dev.driver_data;
if (get_device(&gdev->dev)) { if (get_device(&gdev->dev)) {
if (klist_node_attached(&gdev->dev.knode_bus)) if (device_is_registered(&gdev->dev))
return gdev; return gdev;
put_device(&gdev->dev); put_device(&gdev->dev);
} }
......
...@@ -987,7 +987,7 @@ void usb_disable_device(struct usb_device *dev, int skip_ep0) ...@@ -987,7 +987,7 @@ void usb_disable_device(struct usb_device *dev, int skip_ep0)
/* remove this interface if it has been registered */ /* remove this interface if it has been registered */
interface = dev->actconfig->interface[i]; interface = dev->actconfig->interface[i];
if (!klist_node_attached(&interface->dev.knode_bus)) if (!device_is_registered(&interface->dev))
continue; continue;
dev_dbg (&dev->dev, "unregistering interface %s\n", dev_dbg (&dev->dev, "unregistering interface %s\n",
interface->dev.bus_id); interface->dev.bus_id);
......
...@@ -303,7 +303,7 @@ int usb_driver_claim_interface(struct usb_driver *driver, ...@@ -303,7 +303,7 @@ int usb_driver_claim_interface(struct usb_driver *driver,
/* if interface was already added, bind now; else let /* if interface was already added, bind now; else let
* the future device_add() bind it, bypassing probe() * the future device_add() bind it, bypassing probe()
*/ */
if (klist_node_attached(&dev->knode_bus)) if (device_is_registered(dev))
device_bind_driver(dev); device_bind_driver(dev);
return 0; return 0;
...@@ -336,8 +336,8 @@ void usb_driver_release_interface(struct usb_driver *driver, ...@@ -336,8 +336,8 @@ void usb_driver_release_interface(struct usb_driver *driver,
if (iface->condition != USB_INTERFACE_BOUND) if (iface->condition != USB_INTERFACE_BOUND)
return; return;
/* release only after device_add() */ /* don't release if the interface hasn't been added yet */
if (klist_node_attached(&dev->knode_bus)) { if (device_is_registered(dev)) {
iface->condition = USB_INTERFACE_UNBINDING; iface->condition = USB_INTERFACE_UNBINDING;
device_release_driver(dev); device_release_driver(dev);
} }
......
...@@ -317,6 +317,11 @@ dev_set_drvdata (struct device *dev, void *data) ...@@ -317,6 +317,11 @@ dev_set_drvdata (struct device *dev, void *data)
dev->driver_data = data; dev->driver_data = data;
} }
static inline int device_is_registered(struct device *dev)
{
return klist_node_attached(&dev->knode_bus);
}
/* /*
* High level routines for use by the bus drivers * High level routines for use by the bus drivers
*/ */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册