wifi-p2p: don't assert for pending action 'waiting-for-supplicant' in nm_device_p2p_wifi_set_mgmt_iface()

<info>  [1548688998.8282] device (wlan0): supplicant interface state: starting -> ready
 <debug> [1548688998.8282] device[0x55bd55f19f30] (p2p-dev-wlan0): P2P: Releasing WPA supplicant interfaces.
 <debug> [1548688998.8282] device[0x55bd55f19f30] (p2p-dev-wlan0): P2P: WPA supplicant management interface changed to /fi/w1/wpa>
 <warn>  [1548688998.8282] device (p2p-dev-wlan0): remove_pending_action (0): 'waiting-for-supplicant' not pending
 file src/devices/nm-device.c: line 14134 (nm_device_remove_pending_action): should not be reached

   #0  0x00007f2c58dad1e5 n/a (libglib-2.0.so.0)
   #1  0x00007f2c58dae51d g_logv (libglib-2.0.so.0)
   #2  0x00007f2c58dae6f3 g_log (libglib-2.0.so.0)
   #3  0x000055bd55246104 nm_device_remove_pending_action (NetworkManager)
   #4  0x00007f2c487c4864 nm_device_p2p_wifi_set_mgmt_iface (libnm-device-plugin-wifi.so)
   #5  0x00007f2c58e94c73 n/a (libgobject-2.0.so.0)
   #6  0x000055bd55233112 constructor (NetworkManager)
   #7  0x00007f2c58e94e8b n/a (libgobject-2.0.so.0)
   #8  0x00007f2c58e96fde g_object_new_valist (libgobject-2.0.so.0)
   #9  0x00007f2c58e9733d g_object_new (libgobject-2.0.so.0)
   #10 0x00007f2c487c4a65 nm_device_p2p_wifi_new (libnm-device-plugin-wifi.so)
   #11 0x00007f2c487c6655 recheck_p2p_availability (libnm-device-plugin-wifi.so)
   #12 0x00007f2c487c9119 supplicant_iface_state_cb (libnm-device-plugin-wifi.so)
   #13 0x00007f2c58525ace ffi_call_unix64 (libffi.so.6)
   #14 0x00007f2c5852548f ffi_call (libffi.so.6)
   #15 0x00007f2c58e903a6 g_cclosure_marshal_generic_va (libgobject-2.0.so.0)
   #16 0x00007f2c58e8f636 n/a (libgobject-2.0.so.0)
   #17 0x00007f2c58eabb01 g_signal_emit_valist (libgobject-2.0.so.0)

Fixes: 00e64d1332
This commit is contained in:
Thomas Haller 2019-01-28 16:30:00 +01:00
parent a4f2435d51
commit 7d5da12e8e

View file

@ -985,7 +985,8 @@ device_state_changed (NMDevice *device,
case NM_DEVICE_STATE_UNMANAGED:
break;
case NM_DEVICE_STATE_UNAVAILABLE:
if (!priv->mgmt_iface || nm_supplicant_interface_get_state (priv->mgmt_iface) < NM_SUPPLICANT_INTERFACE_STATE_READY)
if ( !priv->mgmt_iface
|| nm_supplicant_interface_get_state (priv->mgmt_iface) < NM_SUPPLICANT_INTERFACE_STATE_READY)
nm_device_add_pending_action (device, NM_PENDING_ACTION_WAITING_FOR_SUPPLICANT, FALSE);
break;
@ -1107,7 +1108,7 @@ nm_device_p2p_wifi_set_mgmt_iface (NMDeviceP2PWifi *self,
/* We are not waiting on the supplicant anymore if the state is ready. */
if (nm_supplicant_interface_get_state (priv->mgmt_iface) >= NM_SUPPLICANT_INTERFACE_STATE_READY)
nm_device_remove_pending_action (NM_DEVICE (self), NM_PENDING_ACTION_WAITING_FOR_SUPPLICANT, TRUE);
nm_device_remove_pending_action (NM_DEVICE (self), NM_PENDING_ACTION_WAITING_FOR_SUPPLICANT, FALSE);
g_signal_connect_object (priv->mgmt_iface, NM_SUPPLICANT_INTERFACE_STATE,
G_CALLBACK (supplicant_iface_state_cb),