|
|
146a1d |
From c71d29b3dbe13d6ce456200d9e8ce9d0739eb368 Mon Sep 17 00:00:00 2001
|
|
|
146a1d |
From: Thomas Haller <thaller@redhat.com>
|
|
|
146a1d |
Date: Mon, 3 Aug 2020 09:54:04 +0200
|
|
|
146a1d |
Subject: [PATCH 1/1] wifi: avoid crash due to incomplete Wi-Fi API info
|
|
|
146a1d |
|
|
|
146a1d |
In this case, GetAll failed with "Timeout was reached". We still
|
|
|
146a1d |
create a dummy BSS info, because we kept track of the object to
|
|
|
146a1d |
start with. That way, we don't simply want to ignore the failure,
|
|
|
146a1d |
because NMDeviceWifi might track this NMWifiAP already, and we may
|
|
|
146a1d |
need an update (even if we failed to fetch the requested information).
|
|
|
146a1d |
|
|
|
146a1d |
However, that later leads to a crash, because NMDeviceWifi expect the BSSID
|
|
|
146a1d |
present then.
|
|
|
146a1d |
|
|
|
146a1d |
Avoid that, by don't processing such APs.
|
|
|
146a1d |
|
|
|
146a1d |
#0 g_logv (log_domain=0x7f2ac10a60a9 "NetworkManager", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>) at ../glib/gmessages.c:1377
|
|
|
146a1d |
#1 0x00007f2acf152233 in g_log
|
|
|
146a1d |
(log_domain=log_domain@entry=0x7f2ac10a60a9 "NetworkManager", log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7f2acf1a46ff "%s: assertion '%s' failed")
|
|
|
146a1d |
at ../glib/gmessages.c:1415
|
|
|
146a1d |
#2 0x00007f2acf152a2d in g_return_if_fail_warning
|
|
|
146a1d |
(log_domain=log_domain@entry=0x7f2ac10a60a9 "NetworkManager", pretty_function=pretty_function@entry=0x7f2ac10a9e70 <__func__.50> "try_fill_ssid_for_hidden_ap", expression=expression@entry=0x7f2ac10a86d0 "bssid") at ../glib/gmessages.c:2771
|
|
|
146a1d |
#3 0x00007f2ac108a402 in try_fill_ssid_for_hidden_ap (ap=0x5569978b61c0 [NMWifiAP], self=0x55699786ea00 [NMDeviceWifi]) at src/devices/wifi/nm-device-wifi.c:1883
|
|
|
146a1d |
#4 supplicant_iface_bss_changed_cb (iface=0x556997777260 [NMSupplicantInterface], bss_info=0x7f2ab4028f00, is_present=1, self=0x55699786ea00 [NMDeviceWifi])
|
|
|
146a1d |
at src/devices/wifi/nm-device-wifi.c:1946
|
|
|
146a1d |
#5 0x00007f2ace246af0 in ffi_call_unix64 () at ../src/x86/unix64.S:76
|
|
|
146a1d |
#6 0x00007f2ace2462ab in ffi_call (cif=cif@entry=0x7ffd9c107c90, fn=fn@entry=0x7f2ac1089e80 <supplicant_iface_bss_changed_cb>, rvalue=<optimized out>, avalue=avalue@entry=0x7ffd9c107ba0)
|
|
|
146a1d |
at ../src/x86/ffi64.c:525
|
|
|
146a1d |
#7 0x00007f2acf23e87a in g_cclosure_marshal_generic_va
|
|
|
146a1d |
(closure=<optimized out>, return_value=<optimized out>, instance=<optimized out>, args_list=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=<optimized out>) at ../gobject/gclosure.c:1614
|
|
|
146a1d |
#8 0x00007f2acf23dae6 in _g_closure_invoke_va
|
|
|
146a1d |
(closure=closure@entry=0x5569978a0cc0, return_value=return_value@entry=0x0, instance=instance@entry=0x556997777260, args=args@entry=0x7ffd9c107f00, n_params=2, param_types=0x55699775b990) at ../gobject/gclosure.c:873
|
|
|
146a1d |
#9 0x00007f2acf2566e9 in g_signal_emit_valist (instance=0x556997777260, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7ffd9c107f00) at ../gobject/gsignal.c:3407
|
|
|
146a1d |
#10 0x00007f2acf256c63 in g_signal_emit (instance=instance@entry=0x556997777260, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3554
|
|
|
146a1d |
#11 0x00005569972ece61 in _bss_info_changed_emit (self=self@entry=0x556997777260 [NMSupplicantInterface], bss_info=bss_info@entry=0x7f2ab4028f00, is_present=is_present@entry=1)
|
|
|
146a1d |
at src/supplicant/nm-supplicant-interface.c:555
|
|
|
146a1d |
#12 0x00005569972ed3a0 in _bss_info_properties_changed (self=0x556997777260 [NMSupplicantInterface], bss_info=0x7f2ab4028f00, properties=<optimized out>, initial=<optimized out>)
|
|
|
146a1d |
at src/supplicant/nm-supplicant-interface.c:758
|
|
|
146a1d |
#13 0x00005569972f756b in _bss_info_get_all_cb (result=0x0, error=<optimized out>, user_data=0x7f2ab4028f00) at src/supplicant/nm-supplicant-interface.c:784
|
|
|
146a1d |
#14 0x0000556997217bc1 in _nm_dbus_connection_call_default_cb (source=0x5569977480c0 [GDBusConnection], res=<optimized out>, user_data=user_data@entry=0x556997855d50)
|
|
|
146a1d |
at shared/nm-glib-aux/nm-dbus-aux.c:74
|
|
|
146a1d |
#15 0x00007f2acf339e4a in g_task_return_now (task=task@entry=0x7f2ab4003f00 [GTask]) at ../gio/gtask.c:1214
|
|
|
146a1d |
#16 0x00007f2acf33aa3d in g_task_return (task=0x7f2ab4003f00 [GTask], type=<optimized out>) at ../gio/gtask.c:1283
|
|
|
146a1d |
#17 0x00007f2acf33b4fe in g_task_return (type=G_TASK_RETURN_ERROR, task=<optimized out>) at ../gio/gtask.c:1861
|
|
|
146a1d |
#18 g_task_return_error (task=<optimized out>, error=<optimized out>) at ../gio/gtask.c:1867
|
|
|
146a1d |
#19 0x0000556997893f40 in ()
|
|
|
146a1d |
#20 0x3a85d39adfae7f00 in ()
|
|
|
146a1d |
#21 0x00007f2ab4003cc0 in ()
|
|
|
146a1d |
#22 0x00007f2acf396460 in g_dbus_connection_call_done () at ../gio/gdbusconnection.c:2059
|
|
|
146a1d |
#23 0x00007f2ab4003f00 in ()
|
|
|
146a1d |
#24 0x0000000000000086 in ()
|
|
|
146a1d |
#25 0x0000000000000018 in ()
|
|
|
146a1d |
#26 0x00007f2acf339e4a in g_task_return_now (task=0x7f2ab4003f00 [GTask], task@entry=0x7f2ab4003cc0 [GTask]) at ../gio/gtask.c:1214
|
|
|
146a1d |
#27 0x00007f2acf33aa3d in g_task_return (task=0x7f2ab4003cc0 [GTask], type=<optimized out>) at ../gio/gtask.c:1283
|
|
|
146a1d |
#28 0x00007f2acf33b4fe in g_task_return (type=G_TASK_RETURN_ERROR, task=<optimized out>) at ../gio/gtask.c:1861
|
|
|
146a1d |
#29 g_task_return_error (task=<optimized out>, error=<optimized out>) at ../gio/gtask.c:1867
|
|
|
146a1d |
#30 0x0000003000000028 in ()
|
|
|
146a1d |
#31 0x00007ffd9c108290 in ()
|
|
|
146a1d |
|
|
|
146a1d |
Fixes: b83f07916a54 ('supplicant: large rework of wpa_supplicant handling')
|
|
|
146a1d |
(cherry picked from commit 4d878d7012cd9dc031682ef5e5b025081427325b)
|
|
|
146a1d |
(cherry picked from commit 029d07b019ea6532fbf6f8db03efb648f0931625)
|
|
|
146a1d |
---
|
|
|
146a1d |
src/devices/wifi/nm-device-wifi.c | 7 +++++++
|
|
|
146a1d |
1 file changed, 7 insertions(+)
|
|
|
146a1d |
|
|
|
146a1d |
diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
|
|
|
146a1d |
index 2d97f9b117a2..2a3428861737 100644
|
|
|
146a1d |
--- a/src/devices/wifi/nm-device-wifi.c
|
|
|
146a1d |
+++ b/src/devices/wifi/nm-device-wifi.c
|
|
|
146a1d |
@@ -1937,6 +1937,13 @@ supplicant_iface_bss_changed_cb (NMSupplicantInterface *iface,
|
|
|
146a1d |
} else {
|
|
|
146a1d |
gs_unref_object NMWifiAP *ap = NULL;
|
|
|
146a1d |
|
|
|
146a1d |
+ if (!bss_info->bssid_valid) {
|
|
|
146a1d |
+ /* We failed to initialize the info about the AP. This can
|
|
|
146a1d |
+ * happen due to an error in the D-Bus communication. In this case
|
|
|
146a1d |
+ * we ignore the info. */
|
|
|
146a1d |
+ return;
|
|
|
146a1d |
+ }
|
|
|
146a1d |
+
|
|
|
146a1d |
ap = nm_wifi_ap_new_from_properties (bss_info);
|
|
|
146a1d |
|
|
|
146a1d |
/* Let the manager try to fill in the SSID from seen-bssids lists */
|
|
|
146a1d |
--
|
|
|
146a1d |
2.26.2
|
|
|
146a1d |
|