ucode: add refcount fixes for rtnl/nl80211

Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
Felix Fietkau
2023-02-13 14:20:03 +01:00
committed by John Crispin
parent 2a145ba46a
commit e0aa0eec98

View File

@@ -0,0 +1,48 @@
--- a/lib/rtnl.c
+++ b/lib/rtnl.c
@@ -3704,7 +3704,7 @@ uc_nl_listener(uc_vm_t *vm, size_t nargs
break;
}
- ucv_array_set(listener_registry, i + 1, cb_func);
+ ucv_array_set(listener_registry, i + 1, ucv_get(cb_func));
l = xalloc(sizeof(*l));
l->index = i;
if (!uc_nl_fill_cmds(l->cmds, cmds)) {
@@ -3714,7 +3714,7 @@ uc_nl_listener(uc_vm_t *vm, size_t nargs
}
rv = uc_resource_new(listener_type, l);
- ucv_array_set(listener_registry, i, rv);
+ ucv_array_set(listener_registry, i, ucv_get(rv));
listener_vm = vm;
return rv;
@@ -4150,5 +4150,7 @@ void uc_module_init(uc_vm_t *vm, uc_valu
listener_type = uc_type_declare(vm, "rtnl.listener", listener_fns, uc_nl_listener_free);
listener_registry = ucv_array_new(vm);
+ uc_vm_registry_set(vm, "rtnl.registry", listener_registry);
+
register_constants(vm, scope);
}
--- a/lib/nl80211.c
+++ b/lib/nl80211.c
@@ -2560,7 +2560,7 @@ uc_nl_listener(uc_vm_t *vm, size_t nargs
break;
}
- ucv_array_set(listener_registry, i + 1, cb_func);
+ ucv_array_set(listener_registry, i + 1, ucv_get(cb_func));
l = xalloc(sizeof(*l));
l->index = i;
if (!uc_nl_fill_cmds(l->cmds, cmds)) {
@@ -2570,7 +2570,7 @@ uc_nl_listener(uc_vm_t *vm, size_t nargs
}
rv = uc_resource_new(listener_type, l);
- ucv_array_set(listener_registry, i, rv);
+ ucv_array_set(listener_registry, i, ucv_get(rv));
listener_vm = vm;
return rv;