ucode: add fix for double registry clear on channel disconnect

Avoid clobbering registry items of unrelated connections.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
Felix Fietkau 2025-05-09 12:04:28 +02:00
parent 9daca55916
commit eaab68be92

View file

@ -0,0 +1,26 @@
From: Felix Fietkau <nbd@nbd.name>
Date: Fri, 9 May 2025 11:57:57 +0200
Subject: [PATCH] ubus: fix double registry clear on disconnect
Set c->registry_index to -1 in order to ensure that the resource free path
does not clobber registry items of unrelated connections.
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
--- a/lib/ubus.c
+++ b/lib/ubus.c
@@ -2375,8 +2375,11 @@ uc_ubus_channel_disconnect_cb(struct ubu
c->ctx.sock.fd = -1;
}
- if (c->registry_index >= 0)
- connection_reg_clear(c->vm, c->registry_index);
+ if (c->registry_index >= 0) {
+ int idx = c->registry_index;
+ c->registry_index = -1;
+ connection_reg_clear(c->vm, idx);
+ }
}
static uc_value_t *