summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau2023-09-15 18:12:04 +0000
committerFelix Fietkau2023-09-15 18:15:46 +0000
commit88a3a9e2be07c5a5521d336f8dab485a089a346c (patch)
tree3032bc03f84d0d9efe5d22c7432f91714fb663c8
parent3d425f16d6a69f602e25d7ec19734bb2c8de1588 (diff)
downloadnetifd-88a3a9e2be07c5a5521d336f8dab485a089a346c.tar.gz
wireless: clean up prev_config handling
Always update prev_config directly after creating it Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--wireless.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/wireless.c b/wireless.c
index 1e7d757..958080e 100644
--- a/wireless.c
+++ b/wireless.c
@@ -438,6 +438,8 @@ wireless_device_run_handler(struct wireless_device *wdev, bool up)
wdev->prev_config = NULL;
} else {
prepare_config(wdev, &b, up);
+ free(wdev->prev_config);
+ wdev->prev_config = up ? blob_memdup(b.head) : NULL;
config = blobmsg_format_json(b.head, true);
}
@@ -495,8 +497,6 @@ __wireless_device_set_up(struct wireless_device *wdev, int force)
if ((!force && wdev->state != IFS_DOWN) || config_init)
return;
- free(wdev->prev_config);
- wdev->prev_config = NULL;
wdev->state = IFS_SETUP;
wireless_device_run_handler(wdev, true);
}
@@ -690,16 +690,6 @@ wdev_set_config_state(struct wireless_device *wdev, enum interface_config_state
}
static void
-wdev_prepare_prev_config(struct wireless_device *wdev)
-{
- if (wdev->prev_config)
- return;
-
- prepare_config(wdev, &b, false);
- wdev->prev_config = blob_memdup(b.head);
-}
-
-static void
wdev_change_config(struct wireless_device *wdev, struct wireless_device *wd_new)
{
struct blob_attr *new_config = wd_new->config;
@@ -709,7 +699,6 @@ wdev_change_config(struct wireless_device *wdev, struct wireless_device *wd_new)
wdev->serialize = wd_new->serialize;
free(wd_new);
- wdev_prepare_prev_config(wdev);
if (blob_attr_equal(wdev->config, new_config) && wdev->disabled == disabled)
return;