From c48a6457f851f24b07c384007bb471dafcd0ef14 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Wed, 11 Dec 2013 19:20:19 +0100 Subject: [PATCH 1/1] wireless: fix handling of wdev->config_state, prevent handling of multiple state changes (reload + remove) Signed-off-by: Felix Fietkau --- wireless.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/wireless.c b/wireless.c index 3460337..a4d7c26 100644 --- a/wireless.c +++ b/wireless.c @@ -281,10 +281,10 @@ wdev_handle_config_change(struct wireless_device *wdev) { enum interface_config_state state = wdev->config_state; - wdev->config_state = IFC_NORMAL; switch(state) { case IFC_NORMAL: case IFC_RELOAD: + wdev->config_state = IFC_NORMAL; if (wdev->autostart) __wireless_device_set_up(wdev); break; @@ -395,12 +395,10 @@ wireless_device_set_down(struct wireless_device *wdev) static void wdev_set_config_state(struct wireless_device *wdev, enum interface_config_state s) { - enum interface_config_state old_state = wdev->config_state; - - wdev->config_state = s; - if (old_state != IFC_NORMAL) + if (wdev->config_state != IFC_NORMAL) return; + wdev->config_state = s; if (wdev->state == IFS_DOWN) wdev_handle_config_change(wdev); else -- 2.11.0