summaryrefslogtreecommitdiffhomepage
path: root/device.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2011-09-05 04:12:10 +0200
committerFelix Fietkau <nbd@openwrt.org>2011-09-05 04:12:10 +0200
commitf026eb8247d74f88a6b704af866879867574f9f0 (patch)
tree8aca119f60f36e69910e31b89100e54a2b54c73f /device.c
parentf5bb1c61228b7900e69eaea0788ee9d5fb304691 (diff)
remove code duplication
Diffstat (limited to 'device.c')
-rw-r--r--device.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/device.c b/device.c
index e206a76..3f83cb4 100644
--- 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