diff options
author | Felix Fietkau <nbd@nbd.name> | 2024-05-01 19:00:10 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2024-05-01 19:00:21 +0200 |
commit | b6f1e2e5b08eccf23b28c80690d14a3ac6cd08e2 (patch) | |
tree | 6d7904bc2b8b12cad7572997a6274778c7ad158b | |
parent | 52a5f4491c642fcb524494800ce64c5040901b86 (diff) | |
download | openwrt-b6f1e2e5b08eccf23b28c80690d14a3ac6cd08e2.tar.gz openwrt-b6f1e2e5b08eccf23b28c80690d14a3ac6cd08e2.tar.bz2 openwrt-b6f1e2e5b08eccf23b28c80690d14a3ac6cd08e2.zip |
ucode: fix ubus defer when running from within eloop (integrated with uloop)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r-- | package/utils/ucode/patches/100-ubus-fix-uc_ubus_have_uloop-for-eloop-uloop-combinat.patch | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/package/utils/ucode/patches/100-ubus-fix-uc_ubus_have_uloop-for-eloop-uloop-combinat.patch b/package/utils/ucode/patches/100-ubus-fix-uc_ubus_have_uloop-for-eloop-uloop-combinat.patch new file mode 100644 index 0000000000..a1659be3c8 --- /dev/null +++ b/package/utils/ucode/patches/100-ubus-fix-uc_ubus_have_uloop-for-eloop-uloop-combinat.patch @@ -0,0 +1,26 @@ +From: Felix Fietkau <nbd@nbd.name> +Date: Wed, 1 May 2024 18:40:19 +0200 +Subject: [PATCH] ubus: fix uc_ubus_have_uloop for eloop+uloop combination + +When uloop has been integrated with eloop (in hostapd/wpa_supplicant), +uloop_cancelling will return false, since uloop_run is not being called. +This leads to ubus.defer() calling uloop_run in a context where it can +prevent the other event loop from running. + +Fix this by detecting event loop integration via uloop_fd_set_cb being set + +Signed-off-by: Felix Fietkau <nbd@nbd.name> +--- + +--- a/lib/ubus.c ++++ b/lib/ubus.c +@@ -665,6 +665,9 @@ uc_ubus_have_uloop(void) + bool prev = uloop_cancelled; + bool active; + ++ if (uloop_fd_set_cb) ++ return true; ++ + uloop_cancelled = true; + active = uloop_cancelling(); + uloop_cancelled = prev; |