diff options
Diffstat (limited to 'mdk-stage1/modules.c')
-rw-r--r-- | mdk-stage1/modules.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mdk-stage1/modules.c b/mdk-stage1/modules.c index 5f02d2a6d..9cbb43598 100644 --- a/mdk-stage1/modules.c +++ b/mdk-stage1/modules.c @@ -30,6 +30,7 @@ #include <string.h> #include <stdio.h> #include <errno.h> +#include <time.h> #include <sys/utsname.h> #include "log.h" #include "utils.h" @@ -287,6 +288,8 @@ static void add_modules_conf(char * str) int module_already_present(const char * name) { FILE * f; + struct stat sb; + char *path; int answ = 0; if ((f = fopen("/proc/modules", "rb"))) { @@ -298,6 +301,14 @@ int module_already_present(const char * name) } fclose(f); } + + /* built-in module case. try to find them through sysfs */ + if (!answ) { + asprintf(&path, "/sys/module/%s", name); + if (!stat(path, &sb)) + answ = 1; + free(path); + } return answ; } |