OSDN Git Service

firewire: Grab dev->sem when doing the update callback.
authorKristian Høgsberg <krh@redhat.com>
Mon, 19 Mar 2007 15:37:16 +0000 (11:37 -0400)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Tue, 20 Mar 2007 22:27:19 +0000 (23:27 +0100)
This serializes the update callback with the probe and remove callback from
the driver core and prevents remove from being called while update is
running for the same device.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/fw-device.c

index 4877cdb..15721a7 100644 (file)
@@ -562,8 +562,11 @@ static int update_unit(struct device *dev, void *data)
        struct fw_unit *unit = fw_unit(dev);
        struct fw_driver *driver = (struct fw_driver *)dev->driver;
 
-       if (is_fw_unit(dev) && driver != NULL && driver->update != NULL)
+       if (is_fw_unit(dev) && driver != NULL && driver->update != NULL) {
+               down(&dev->sem);
                driver->update(unit);
+               up(&dev->sem);
+       }
 
        return 0;
 }