From b43b8f7a7e088c31416374340f576887968f7cad Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 19 Dec 2013 01:32:55 +0100 Subject: do not run kmod-setup in a container --- src/core/kmod-setup.c | 14 +++++++------- src/core/main.c | 3 ++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c index bc3460a698..9709d364f8 100644 --- a/src/core/kmod-setup.c +++ b/src/core/kmod-setup.c @@ -47,13 +47,13 @@ static void systemd_kmod_log( #pragma GCC diagnostic pop -static bool kmod_check_cmdline(void) { +static bool cmdline_check_kdbus(void) { _cleanup_free_ char *line = NULL; - if (proc_cmdline(&line) < 0) + if (proc_cmdline(&line) <= 0) return false; - return strstr(line, "kdbus") == 0; + return strstr(line, "kdbus") != NULL; } int kmod_setup(void) { @@ -73,7 +73,7 @@ int kmod_setup(void) { { "unix", "/proc/net/unix", true, NULL }, /* IPC is needed before we bring up any other services */ - { "kdbus", "/sys/bus/kdbus", false, kmod_check_cmdline }, + { "kdbus", "/sys/bus/kdbus", false, cmdline_check_kdbus }, }; struct kmod_ctx *ctx = NULL; unsigned int i; @@ -82,10 +82,10 @@ int kmod_setup(void) { for (i = 0; i < ELEMENTSOF(kmod_table); i++) { struct kmod_module *mod; - if (kmod_table[i].condition_fn && kmod_table[i].condition_fn()) + if (kmod_table[i].path && access(kmod_table[i].path, F_OK) >= 0) continue; - if (access(kmod_table[i].path, F_OK) >= 0) + if (kmod_table[i].condition_fn && !kmod_table[i].condition_fn()) continue; if (kmod_table[i].warn) @@ -113,7 +113,7 @@ int kmod_setup(void) { log_info("Inserted module '%s'", kmod_module_get_name(mod)); else if (r == KMOD_PROBE_APPLY_BLACKLIST) log_info("Module '%s' is blacklisted", kmod_module_get_name(mod)); - else + else if (kmod_table[i].warn) log_error("Failed to insert module '%s'", kmod_module_get_name(mod)); kmod_module_unref(mod); diff --git a/src/core/main.c b/src/core/main.c index eac4fe6134..5189833e48 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1489,7 +1489,8 @@ int main(int argc, char *argv[]) { status_welcome(); #ifdef HAVE_KMOD - kmod_setup(); + if (detect_container(NULL) <= 0) + kmod_setup(); #endif hostname_setup(); machine_id_setup(); -- cgit v1.2.3-54-g00ecf