Skip to content
Snippets Groups Projects
Commit ecd8678f authored by Milan P. Stanić's avatar Milan P. Stanić
Browse files

testing/eiwd: upgrade to 2.22

pick upstream patch to fix segfaults on some wifi cards
parent 44bb5ded
No related branches found
No related tags found
1 merge request!73410testing/eiwd: upgrade to 2.22
Pipeline #265081 skipped
......@@ -2,7 +2,7 @@
# Maintainer: Milan P. Stanić <mps@arvanta.net>
pkgname=eiwd
_realpkgname=iwd
pkgver=2.16
pkgver=2.22
pkgrel=0
pkgdesc="Internet Wireless Daemon without dbus"
url="https://github.com/illiliti/eiwd"
......@@ -16,6 +16,8 @@ checkdepends="coreutils"
subpackages="$pkgname-doc $pkgname-openrc"
source="https://github.com/illiliti/eiwd/releases/download/$pkgver-1/iwd-$pkgver.tar.xz
0001-resolving-service-none.patch
fix-crash-in-the-RSSI-polling-fallback-workaround.patch
eiwd.initd
main.conf
iwd_passphrase
......@@ -51,8 +53,9 @@ package() {
}
sha512sums="
4c8c4e0bc63d1e24a93b6150993fac25d74c2b7ada5d4324c2aaf563899a1cb22d880ad332750a9fa3ededfacb90bb23d198aea4321d6a524d116c26e314a7c4 iwd-2.16.tar.xz
455ee65debe9ab2a2f9267e57d20aa8d4121771fa7e408a37acd6002c47fe14ab45c125edd5a1d1482df01e40153a9dafd4b0e7d721b4f3cab1c42d9d4a1e714 iwd-2.22.tar.xz
aff4cd6bf4ae72aa64f9f5485bd310633f5219eb71532a8c0fa9a05abaaf50f7636a70a63e533370cd12a702854340e18b27b0537b26ead846fa9c351ec03b42 0001-resolving-service-none.patch
5760182ef1b0a7f1e34643dd63d57513ebfc6764a57b9fb20884e3d4e3efe0514adf78df52ae080014f6f1cd9c2467f396c7723cdc9914eb5591cd6ca3b3a2b2 fix-crash-in-the-RSSI-polling-fallback-workaround.patch
b78d19f5a3ef5f12d33b4fab11ed348b1b2fe309310c33fe278d302cadf065dba72c13214bd760576ecb47f6681d012adcb4997e17a75778d41e3c4fd6a0eb01 eiwd.initd
33517c2c72c43440ed2e68e53bb937d7d557efdf19a6f7fa9cceb87be4b64499f8b9bd6f981f5e413dc3d724eb13ec08b50a129dd81cf64872c362fc5e1d1321 main.conf
06d0258e9e4d13a5cd7cb47cc30c122e2ea950c84b18352fef4982bef41961295316de396b7e6d0a33b949436da40d08fdd76230c7c228d8bdd0e33751cad26c iwd_passphrase
......
From b0a011d8f4aff5c24736eb1213e667aaad113c6a Mon Sep 17 00:00:00 2001
From: James Prestwood <prestwoj@gmail.com>
Date: Thu, 3 Oct 2024 05:58:17 -0700
Subject: netdev: fix crash in the RSSI polling fallback workaround
Prior to adding the polling fallback this code path was only used for
signal level list notifications and netdev_rssi_polling_update() was
structured as such, where if the RSSI list feature existed there was
nothing to be done as the kernel handled the notifications.
For certain mediatek cards this is broken, hence why the fallback was
added. But netdev_rssi_polling_update() was never changed to take
this into account which bypassed the timer cleanup on disconnections
resulting in a crash when the timer fired after IWD was disconnected:
iwd: ++++++++ backtrace ++++++++
iwd: #0 0x7b5459642520 in /lib/x86_64-linux-gnu/libc.so.6
iwd: #1 0x7b54597aedf4 in /lib/x86_64-linux-gnu/libc.so.6
iwd: #2 0x49f82d in l_netlink_message_append() at ome/jprestwood/iwd/ell/netlink.c:825
iwd: #3 0x4a0c12 in l_genl_msg_append_attr() at ome/jprestwood/iwd/ell/genl.c:1522
iwd: #4 0x405c61 in netdev_rssi_poll() at ome/jprestwood/iwd/src/netdev.c:764
iwd: #5 0x49cce4 in timeout_callback() at ome/jprestwood/iwd/ell/timeout.c:70
iwd: #6 0x49c2ed in l_main_iterate() at ome/jprestwood/iwd/ell/main.c:455 (discriminator 2)
iwd: #7 0x49c3bc in l_main_run() at ome/jprestwood/iwd/ell/main.c:504
iwd: #8 0x49c5f0 in l_main_run_with_signal() at ome/jprestwood/iwd/ell/main.c:632
iwd: #9 0x4049ed in main() at ome/jprestwood/iwd/src/main.c:614
iwd: #10 0x7b5459629d90 in /lib/x86_64-linux-gnu/libc.so.6
iwd: #11 0x7b5459629e40 in /lib/x86_64-linux-gnu/libc.so.6
iwd: +++++++++++++++++++++++++++
To fix this we need to add checks for the cqm_poll_fallback flag in
netdev_rssi_polling_update().
---
src/netdev.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/netdev.c b/src/netdev.c
index d298977a1..8379a5983 100644
--- a/src/netdev.c
+++ b/src/netdev.c
@@ -769,11 +769,12 @@ static void netdev_rssi_poll(struct l_timeout *timeout, void *user_data)
/* To be called whenever operational or rssi_levels_num are updated */
static void netdev_rssi_polling_update(struct netdev *netdev)
{
- if (wiphy_has_ext_feature(netdev->wiphy,
+ if (!netdev->cqm_poll_fallback && wiphy_has_ext_feature(netdev->wiphy,
NL80211_EXT_FEATURE_CQM_RSSI_LIST))
return;
- if (netdev->operational && netdev->rssi_levels_num > 0) {
+ if (netdev->operational && (netdev->rssi_levels_num > 0 ||
+ netdev->cqm_poll_fallback)) {
if (netdev->rssi_poll_timeout)
return;
--
cgit 1.2.3-korg
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment