public inbox for iwd@lists.linux.dev
 help / color / mirror / Atom feed
* Re: [PATCH 1/2] scan: fix invalid read when canceling an ongoing scan
@ 2024-09-02  6:34 Daniel Bond
  2024-09-03 11:44 ` James Prestwood
  0 siblings, 1 reply; 9+ messages in thread
From: Daniel Bond @ 2024-09-02  6:34 UTC (permalink / raw)
  To: prestwoj; +Cc: iwd

Hi,

There was reported an issue reported in the Arch Linux issue tracker,
which I also experienced on my hardware after upgrading iwd to version
2.20. What happens is that iwd constantly segfaults with messages like
this:

[  279.974994] Code: 00 00 00 00 f3 0f 1e fa 55 48 89 e5 41 57 41 56
41 55 41 54 53 48 83 ec 18 48 89 4d c8 4c 89 45 c0 48 85 ff 0f 84 f3
 00 00 00 <80> 7e 20 00 49 89 f5 0f 85 e6 00 00 00 48 83 fa 01 48 89 fb 49 89
[  280.685109] iwd[1648]: segfault at 32 ip 0000788413f05de6 sp
00007ffeb3d023d0 error 4 in libell.so.0.0.2[1ade6,788413efb000+57000]
lik
ely on CPU 1 (core 1, socket 0)
[  280.685125] Code: 00 00 00 00 f3 0f 1e fa 55 48 89 e5 41 57 41 56
41 55 41 54 53 48 83 ec 18 48 89 4d c8 4c 89 45 c0 48 85 ff 0f 84 f3
 00 00 00 <80> 7e 20 00 49 89 f5 0f 85 e6 00 00 00 48 83 fa 01 48 89 fb 49 89
[  290.573368] iwd[1686]: segfault at 32 ip 00007c0b35d49de6 sp
00007fff86c509d0 error 4 in libell.so.0.0.2[1ade6,7c0b35d3f000+57000]
lik
ely on CPU 2 (core 0, socket 0)

The issue seems to be resolved by checking that results->sr is set:

- if (!results->sr->canceled)
+ if (results->sr && !results->sr->canceled)

More information reported in the arch linux gitlab issuetracker, under
gitlab archlinux org /archlinux/packaging/packages/iwd/-/issues/5 .

In advance, thanks.

Br, Daniel Bond

^ permalink raw reply	[flat|nested] 9+ messages in thread
* [PATCH 1/2] scan: fix invalid read when canceling an ongoing scan
@ 2024-07-24 12:14 James Prestwood
  2024-07-24 14:14 ` Denis Kenzior
  0 siblings, 1 reply; 9+ messages in thread
From: James Prestwood @ 2024-07-24 12:14 UTC (permalink / raw)
  To: iwd; +Cc: James Prestwood

When the survey code was added it neglected to add the same
cancelation logic that existed for the GET_SCAN call, i.e. if
a scan was canceled and there was a pending GET_SURVEY to the
kernel that needs to be canceled, and the request cleaned up.

Fixes: 35808debae ("scan: use GET_SURVEY for SNR calculation in ranking")
---
 src/scan.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/scan.c b/src/scan.c
index 1982cf74..30b3361e 100644
--- a/src/scan.c
+++ b/src/scan.c
@@ -948,7 +948,7 @@ bool scan_cancel(uint64_t wdev_id, uint32_t id)
 	 * Takes care of the following cases:
 	 * 1. If TRIGGER_SCAN is in flight
 	 * 2. TRIGGER_SCAN sent but bounced with -EBUSY
-	 * 3. Scan request is done but GET_SCAN is still pending
+	 * 3. Scan request is done but GET_SCAN/GET_SURVEY is still pending
 	 *
 	 * For case 3, we can easily cancel the command and proceed with the
 	 * other pending requests.  For case 1 & 2, the subsequent pending
@@ -963,6 +963,9 @@ bool scan_cancel(uint64_t wdev_id, uint32_t id)
 		if (sc->start_cmd_id)
 			l_genl_family_cancel(nl80211, sc->start_cmd_id);
 
+		if (sc->get_survey_cmd_id)
+			l_genl_family_cancel(nl80211, sc->get_survey_cmd_id);
+
 		if (sc->get_scan_cmd_id)
 			l_genl_family_cancel(nl80211, sc->get_scan_cmd_id);
 
@@ -2105,7 +2108,10 @@ static void get_survey_done(void *user_data)
 
 	sc->get_survey_cmd_id = 0;
 
-	get_results(results);
+	if (!results->sr->canceled)
+		get_results(results);
+	else
+		get_scan_done(user_data);
 }
 
 static bool scan_survey(struct scan_results *results)
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2024-09-05 11:55 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-02  6:34 [PATCH 1/2] scan: fix invalid read when canceling an ongoing scan Daniel Bond
2024-09-03 11:44 ` James Prestwood
2024-09-03 17:03   ` Daniel Bond
2024-09-03 18:04     ` James Prestwood
2024-09-03 19:27       ` [PATCH] scan: add guard to check that results->sr is set to avoid segfault issue Daniel Bond
2024-09-05  3:23   ` [PATCH 1/2] scan: fix invalid read when canceling an ongoing scan Denis Kenzior
2024-09-05 11:55     ` James Prestwood
  -- strict thread matches above, loose matches on Subject: below --
2024-07-24 12:14 James Prestwood
2024-07-24 14:14 ` Denis Kenzior

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox