Skip to content

Commit 469a7e2

Browse files
stig-bjorlykketmon-nordic
authored andcommitted
[nrf fromlist] settings: Make settings_subsys_init() thread safe
Multiple components may use the settings subsystem, so ensure settings_subsys_init() is thread safe. Upstream PR: zephyrproject-rtos/zephyr#54943 Signed-off-by: Stig Bjørlykke <[email protected]>
1 parent bf10b68 commit 469a7e2

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

subsys/settings/src/settings_init.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "settings/settings_file.h"
1616
#include <zephyr/kernel.h>
1717

18+
extern struct k_mutex settings_lock;
1819

1920
bool settings_subsys_initialized;
2021

@@ -27,17 +28,19 @@ int settings_subsys_init(void)
2728

2829
int err = 0;
2930

30-
if (settings_subsys_initialized) {
31-
return 0;
32-
}
31+
k_mutex_lock(&settings_lock, K_FOREVER);
3332

34-
settings_init();
33+
if (!settings_subsys_initialized) {
34+
settings_init();
3535

36-
err = settings_backend_init(); /* func rises kernel panic once error */
36+
err = settings_backend_init(); /* func rises kernel panic once error */
3737

38-
if (!err) {
39-
settings_subsys_initialized = true;
38+
if (!err) {
39+
settings_subsys_initialized = true;
40+
}
4041
}
4142

43+
k_mutex_unlock(&settings_lock);
44+
4245
return err;
4346
}

0 commit comments

Comments
 (0)