[PATCH v4 2/2] netdev: fix potential command ID overwrite setting CQM threshold

James Prestwood
2024-09-03T18:07:00Z

With the introduction of affinities the CQM threshold can be toggled
by a DBus call. There was no check if there was already a pending
call which would cause the command ID to be overwritten and lose any
potential to cancel it, e.g. if netdev went down.
---
src/netdev.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/netdev.c b/src/netdev.c
index 14fe41b4..d95a2a1e 100644
--- a/src/netdev.c
+++ b/src/netdev.c
@@ -3715,6 +3715,9 @@ static int netdev_cqm_rssi_update(struct netdev *netdev)

l_debug("");

+ if (netdev->set_cqm_cmd_id)
+ return -EBUSY;
+
if (!wiphy_has_ext_feature(netdev->wiphy,
NL80211_EXT_FEATURE_CQM_RSSI_LIST))
msg = netdev_build_cmd_cqm_rssi_update(netdev, NULL, 0);
@@ -3752,9 +3755,7 @@ static int netdev_set_signal_thresholds(struct netdev *netdev, int threshold,
netdev->low_signal_threshold = threshold;
netdev->low_signal_threshold_5ghz = threshold_5ghz;

- netdev_cqm_rssi_update(netdev);
-
- return 0;
+ return netdev_cqm_rssi_update(netdev);
}

int netdev_lower_signal_threshold(struct netdev *netdev)
--
2.34.1