remove code duplication
authorFelix Fietkau <nbd@openwrt.org>
Mon, 5 Sep 2011 02:12:10 +0000 (04:12 +0200)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 5 Sep 2011 02:12:10 +0000 (04:12 +0200)
device.c

index e206a765669101d19f473fa8cdb927709df0e2a8..3f83cb4700f99ee4bc608ae5990cc63477ee618c 100644 (file)
--- a/device.c
+++ b/device.c
@@ -261,6 +261,15 @@ void device_add_user(struct device_user *dep, struct device *dev)
        }
 }
 
+static void
+__device_free_unused(struct device *dev)
+{
+       if (!list_empty(&dev->users))
+               return;
+
+       device_free(dev);
+}
+
 void device_remove_user(struct device_user *dep)
 {
        struct device *dev = dep->dev;
@@ -269,22 +278,8 @@ void device_remove_user(struct device_user *dep)
                device_release(dep);
 
        list_del(&dep->list);
-
-       if (list_empty(&dev->users)) {
-               /* all references have gone away, remove this device */
-               device_free(dev);
-       }
-
        dep->dev = NULL;
-}
-
-static void
-__device_free_unused(struct device *dev)
-{
-       if (!list_empty(&dev->users))
-               return;
-
-       device_free(dev);
+       __device_free_unused(dev);
 }
 
 void