summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2020-07-27 21:58:41 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2020-07-27 21:58:41 +0200
commit8b0bf1ee077715ceb0535fbda799038ea62baef8 (patch)
tree2ef39a48cc78e4b2ec9d37643d4f7c6c320f0341 /common
parent67f0e7aedefcb06b38ef50ddd32b0a280bbb10e8 (diff)
parenta66ffa8dab14b82f9f9edddb03d6358b861ff5c0 (diff)
downloadbarebox-8b0bf1ee077715ceb0535fbda799038ea62baef8.tar.gz
barebox-8b0bf1ee077715ceb0535fbda799038ea62baef8.tar.xz
Merge branch 'for-next/misc'
Diffstat (limited to 'common')
-rw-r--r--common/Kconfig7
-rw-r--r--common/globalvar.c5
-rw-r--r--common/serdev.c5
-rw-r--r--common/startup.c31
4 files changed, 27 insertions, 21 deletions
diff --git a/common/Kconfig b/common/Kconfig
index b59dc39d4c..642ff15d32 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -312,6 +312,13 @@ config MALLOC_DUMMY
memory is never freed. This is suitable for well tested noninteractive
environments only.
+config MALLOC_LIBC
+ bool "libc malloc"
+ depends on SANDBOX
+ help
+ select this option to use the libc malloc implementation in the sandbox.
+ This is benefecial for testing with external memory integrity tools.
+
endchoice
config MODULES
diff --git a/common/globalvar.c b/common/globalvar.c
index c87f2c9339..98a028a68a 100644
--- a/common/globalvar.c
+++ b/common/globalvar.c
@@ -563,10 +563,7 @@ int globalvar_add_simple_bitmask(const char *name, unsigned long *value,
p = dev_add_param_bitmask(&global_device, name, NULL, NULL,
value, names, max, NULL);
- if (IS_ERR(p))
- return PTR_ERR(p);
-
- return 0;
+ return PTR_ERR_OR_ZERO(p);
}
int globalvar_add_simple_ip(const char *name, IPaddr_t *ip)
diff --git a/common/serdev.c b/common/serdev.c
index c50b3bd26a..4bf11b1618 100644
--- a/common/serdev.c
+++ b/common/serdev.c
@@ -84,10 +84,7 @@ int serdev_device_open(struct serdev_device *serdev)
p = dev_add_param_uint64(serdev->dev, "polling_interval",
serdev_device_set_polling_interval, NULL,
&serdev->polling_interval, "%llu", serdev);
- if (IS_ERR(p))
- return PTR_ERR(p);
-
- return 0;
+ return PTR_ERR_OR_ZERO(p);
}
unsigned int serdev_device_set_baudrate(struct serdev_device *serdev,
diff --git a/common/startup.c b/common/startup.c
index 511675ed55..71a28a7be8 100644
--- a/common/startup.c
+++ b/common/startup.c
@@ -235,7 +235,7 @@ void set_autoboot_state(enum autoboot_state autoboot)
*/
enum autoboot_state do_autoboot_countdown(void)
{
- enum autoboot_state autoboot_state;
+ static enum autoboot_state autoboot_state = AUTOBOOT_UNKNOWN;
unsigned flags = CONSOLE_COUNTDOWN_EXTERN;
int ret;
struct stat s;
@@ -243,6 +243,9 @@ enum autoboot_state do_autoboot_countdown(void)
char *abortkeys = NULL;
unsigned char outkey;
+ if (autoboot_state != AUTOBOOT_UNKNOWN)
+ return autoboot_state;
+
if (global_autoboot_state != AUTOBOOT_COUNTDOWN)
return global_autoboot_state;
@@ -281,19 +284,8 @@ enum autoboot_state do_autoboot_countdown(void)
return autoboot_state;
}
-static int run_init(void)
+static int register_autoboot_vars(void)
{
- DIR *dir;
- struct dirent *d;
- const char *initdir = "/env/init";
- bool env_bin_init_exists;
- enum autoboot_state autoboot;
- struct stat s;
-
- /*
- * Register autoboot variables here as they might be altered by
- * init scripts.
- */
globalvar_add_simple_enum("autoboot_abort_key",
&global_autoboot_abort_key,
global_autoboot_abort_keys,
@@ -305,6 +297,19 @@ static int run_init(void)
global_autoboot_states,
ARRAY_SIZE(global_autoboot_states));
+ return 0;
+}
+postcore_initcall(register_autoboot_vars);
+
+static int run_init(void)
+{
+ DIR *dir;
+ struct dirent *d;
+ const char *initdir = "/env/init";
+ bool env_bin_init_exists;
+ enum autoboot_state autoboot;
+ struct stat s;
+
setenv("PATH", "/env/bin");
/* Run legacy /env/bin/init if it exists */