diff options
author | Felix Fietkau <nbd@nbd.name> | 2021-09-27 18:56:21 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-09-27 18:58:01 +0200 |
commit | 5a4ac30c7a15712d01110befec1acfe86c2cbed0 (patch) | |
tree | ad52b0310a781078efb9b016fbe80d89ca50001d /extdev.c | |
parent | 08e954e137ffcf7770200bbd6476dc36bbd326f5 (diff) | |
download | netifd-5a4ac30c7a15712d01110befec1acfe86c2cbed0.tar.gz |
netifd: rework/fix device free handling
Instead of explicitly preventing free in specific code sections using
device_lock/device_unlock, defer all device free handling via uloop timeout
This avoids an entire class of lurking use-after-free bugs triggered
by device event processing and simplifies the code
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'extdev.c')
-rw-r--r-- | extdev.c | 2 |
1 files changed, 0 insertions, 2 deletions
@@ -942,11 +942,9 @@ __create(const char *name, struct device_type *type, struct blob_attr *config) inv_error: extdev_invocation_error(ret, __extdev_methods[METHOD_CREATE], name); error: - device_lock(); free(edev->dev.config); device_cleanup(&edev->dev); free(edev); - device_unlock(); netifd_log_message(L_WARNING, "Failed to create %s %s\n", type->name, name); return NULL; } |