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 <dedec...@gmail.com> --- 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) -- 1.9.1 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel