[PATCH v2] dnsmasq: mark global ubus context as closed after fork

Sven Eckelmann sven at narfation.org
Sat Nov 18 07:29:09 PST 2023


If the dnsmasq process forks to handle TCP connections, it closes the ubus
context. But instead of changing the daemon wide pointer to NULL, only the
local variable was adjusted - and this portion of the code was even dropped
(dead store) by some optimizing compilers.

It makes more sense to change the daemon->ubus pointer because various
functions are already checking it for NULL. It is also the behavior which
ubus_destroy() implements.

Fixes: d8b33dad0bb7 ("dnsmasq: add support for monitoring and modifying dns lookup results via ubus")
Signed-off-by: Sven Eckelmann <sven at narfation.org>
---
Changes in v2:
- added missing word "checking" in commit message. Thanks
  Eric <evil.function at proton.me>
---
 package/network/services/dnsmasq/patches/200-ubus_dns.patch | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/network/services/dnsmasq/patches/200-ubus_dns.patch b/package/network/services/dnsmasq/patches/200-ubus_dns.patch
index 8a70bb8bdf..ccbe70ab9c 100644
--- a/package/network/services/dnsmasq/patches/200-ubus_dns.patch
+++ b/package/network/services/dnsmasq/patches/200-ubus_dns.patch
@@ -210,7 +210,7 @@
 +    return;
 +
 +  ubus_free(ubus);
-+  ubus = NULL;
++  daemon->ubus = NULL;
 +}
 +
  static int ubus_handle_metrics(struct ubus_context *ctx, struct ubus_object *obj,

---
base-commit: 9062e5faaedc03823ee419fe34de1de73f48babc
change-id: 20231118-dnsmasq_drop_ubus_null-69661a68d342

Best regards,
-- 
Sven Eckelmann <sven at narfation.org>




More information about the openwrt-devel mailing list