From 9f3e8eae623da44eea2453bf2e63d5f1cba9e923 Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Tue, 4 Aug 2015 16:22:43 +0200 Subject: [PATCH] netifd: Fix device usage after free Prevent new device from being freed in device_replace when device_unlock is called along the function chain triggered by setting the old device as not present Signed-off-by: Hans Dedecker --- device.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/device.c b/device.c index 6f31e36..59a57f4 100644 --- a/device.c +++ b/device.c @@ -704,6 +704,7 @@ device_replace(struct device *dev, struct device *odev) struct device_user *dep, *tmp; bool present = odev->present; + __devlock++; if (present) device_set_present(odev, false); @@ -713,6 +714,8 @@ device_replace(struct device *dev, struct device *odev) safe_list_add(&dep->list, &dev->users); dep->dev = dev; } + __devlock--; + device_free(odev); if (present) -- 2.30.2