From 548620c18b1f0988dbeab1009788daf9f002e927 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Thu, 8 Dec 2016 12:24:48 +0100 Subject: randomconfig fixes Signed-off-by: Denys Vlasenko --- include/libbb.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/libbb.h b/include/libbb.h index bdafcf5a6..a42a2fba8 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -1191,8 +1191,16 @@ int bb_cat(char** argv); /* If shell needs them, they exist even if not enabled as applets */ int echo_main(int argc, char** argv) IF_ECHO(MAIN_EXTERNALLY_VISIBLE); int printf_main(int argc, char **argv) IF_PRINTF(MAIN_EXTERNALLY_VISIBLE); -int test_main(int argc, char **argv) IF_TEST(MAIN_EXTERNALLY_VISIBLE); -int kill_main(int argc, char **argv) IF_KILL(MAIN_EXTERNALLY_VISIBLE); +int test_main(int argc, char **argv) +#if ENABLE_TEST || ENABLE_TEST1 || ENABLE_TEST2 + MAIN_EXTERNALLY_VISIBLE +#endif +; +int kill_main(int argc, char **argv) +#if ENABLE_KILL || ENABLE_KILLALL || ENABLE_KILLALL5 + MAIN_EXTERNALLY_VISIBLE +#endif +; /* Similar, but used by chgrp, not shell */ int chown_main(int argc, char **argv) IF_CHOWN(MAIN_EXTERNALLY_VISIBLE); /* Used by ftpd */ -- cgit v1.2.3-55-g6feb From c6f35241b38ea0c9581409efcd83716b74918903 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 9 Dec 2016 18:30:30 -0500 Subject: selinux: drop deprecated headers The selinux guys want you to get class values at runtime by converting textual names into constants. Drop the deprecated headers and switch to the new format. This API has been around for years, so there shouldn't be an issue with backwards compatibility. Signed-off-by: Mike Frysinger --- include/libbb.h | 2 -- libbb/update_passwd.c | 13 ++++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/libbb.h b/include/libbb.h index a42a2fba8..2e9ea46e2 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -81,8 +81,6 @@ #if ENABLE_SELINUX # include # include -# include -# include #endif #if ENABLE_FEATURE_UTMP # if defined __UCLIBC__ && ( \ diff --git a/libbb/update_passwd.c b/libbb/update_passwd.c index a2004f480..6255af492 100644 --- a/libbb/update_passwd.c +++ b/libbb/update_passwd.c @@ -30,7 +30,18 @@ static void check_selinux_update_passwd(const char *username) if (!seuser) bb_error_msg_and_die("invalid context '%s'", context); if (strcmp(seuser, username) != 0) { - if (checkPasswdAccess(PASSWD__PASSWD) != 0) + security_class_t tclass; + access_vector_t av; + + tclass = string_to_security_class("passwd"); + if (tclass == 0) + goto die; + av = string_to_av_perm(tclass, "passwd"); + if (av == 0) + goto die; + + if (selinux_check_passwd_access(av) != 0) + die: bb_error_msg_and_die("SELinux: access denied"); } if (ENABLE_FEATURE_CLEAN_UP) -- cgit v1.2.3-55-g6feb From 4f13a7050787aadb402c9c47aae0ff778dbc2c8b Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 12 Dec 2016 16:29:32 +0100 Subject: suppress glibc "use sysmacros.h for major" warning Signed-off-by: Denys Vlasenko --- include/libbb.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/libbb.h b/include/libbb.h index 2e9ea46e2..b1fec0157 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -45,7 +45,7 @@ #include #include #include -#ifndef major +#if !defined(major) || defined(__GLIBC__) # include #endif #include -- cgit v1.2.3-55-g6feb From e184a883567ee3fd735644416e4bd683f1894ac5 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 12 Dec 2016 19:56:31 +0100 Subject: df: implement -B n and -B formats of -B option Signed-off-by: Denys Vlasenko --- coreutils/df.c | 20 ++++++++++++++++++-- include/libbb.h | 1 + libbb/xatonum.c | 19 +++++++++++++++++++ util-linux/fstrim.c | 25 +++---------------------- 4 files changed, 41 insertions(+), 24 deletions(-) (limited to 'include') diff --git a/coreutils/df.c b/coreutils/df.c index fdcdae675..79e4c4670 100644 --- a/coreutils/df.c +++ b/coreutils/df.c @@ -129,8 +129,19 @@ int df_main(int argc UNUSED_PARAM, char **argv) if (opt & OPT_MEGA) df_disp_hr = 1024*1024; - if (opt & OPT_BSIZE) - df_disp_hr = xatoul_range(chp, 1, ULONG_MAX); /* disallow 0 */ + if (opt & OPT_BSIZE) { + /* GNU coreutils 8.25 accepts "-BMiB" form too */ + int i; + for (i = 0; kmg_i_suffixes[i].suffix[0]; i++) { + if (strcmp(kmg_i_suffixes[i].suffix, chp) == 0) { + df_disp_hr = kmg_i_suffixes[i].mult; + goto got_it; + } + } + /* Range used to disallow 0 */ + df_disp_hr = xatoul_range_sfx(chp, 1, ULONG_MAX, kmg_i_suffixes); + got_it: ; + } /* From the manpage of df from coreutils-6.10: * Disk space is shown in 1K blocks by default, unless the environment @@ -203,6 +214,11 @@ int df_main(int argc UNUSED_PARAM, char **argv) bb_simple_perror_msg(mount_point); goto set_error; } + /* Some uclibc versions were seen to lose f_frsize + * (kernel does return it, but then uclibc does not copy it) + */ + if (s.f_frsize == 0) + s.f_frsize = s.f_bsize; if ((s.f_blocks > 0) || !mount_table || (opt & OPT_ALL)) { if (opt & OPT_INODE) { diff --git a/include/libbb.h b/include/libbb.h index b1fec0157..abdc8c2b8 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -923,6 +923,7 @@ extern const struct suffix_mult bkm_suffixes[]; #define km_suffixes (bkm_suffixes + 1) extern const struct suffix_mult cwbkMG_suffixes[]; #define kMG_suffixes (cwbkMG_suffixes + 3) +extern const struct suffix_mult kmg_i_suffixes[]; #include "xatonum.h" /* Specialized: */ diff --git a/libbb/xatonum.c b/libbb/xatonum.c index 9dd5c3e7e..b63b7f54d 100644 --- a/libbb/xatonum.c +++ b/libbb/xatonum.c @@ -96,3 +96,22 @@ const struct suffix_mult cwbkMG_suffixes[] = { /* coreutils also understands TPEZY suffixes for tera- and so on, with B suffix for decimal */ { "", 0 } }; + +const struct suffix_mult kmg_i_suffixes[] = { + { "KiB", 1024 }, + { "kiB", 1024 }, + { "K", 1024 }, + { "k", 1024 }, + { "MiB", 1048576 }, + { "miB", 1048576 }, + { "M", 1048576 }, + { "m", 1048576 }, + { "GiB", 1073741824 }, + { "giB", 1073741824 }, + { "G", 1073741824 }, + { "g", 1073741824 }, + { "KB", 1000 }, + { "MB", 1000000 }, + { "GB", 1000000000 }, + { "", 0 } +}; diff --git a/util-linux/fstrim.c b/util-linux/fstrim.c index 51400ef0b..fc51878b6 100644 --- a/util-linux/fstrim.c +++ b/util-linux/fstrim.c @@ -47,25 +47,6 @@ struct fstrim_range { #define FITRIM _IOWR('X', 121, struct fstrim_range) #endif -static const struct suffix_mult fstrim_sfx[] = { - { "KiB", 1024 }, - { "kiB", 1024 }, - { "K", 1024 }, - { "k", 1024 }, - { "MiB", 1048576 }, - { "miB", 1048576 }, - { "M", 1048576 }, - { "m", 1048576 }, - { "GiB", 1073741824 }, - { "giB", 1073741824 }, - { "G", 1073741824 }, - { "g", 1073741824 }, - { "KB", 1000 }, - { "MB", 1000000 }, - { "GB", 1000000000 }, - { "", 0 } -}; - int fstrim_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int fstrim_main(int argc UNUSED_PARAM, char **argv) { @@ -98,11 +79,11 @@ int fstrim_main(int argc UNUSED_PARAM, char **argv) range.len = ULLONG_MAX; if (opts & OPT_o) - range.start = xatoull_sfx(arg_o, fstrim_sfx); + range.start = xatoull_sfx(arg_o, kmg_i_suffixes); if (opts & OPT_l) - range.len = xatoull_sfx(arg_l, fstrim_sfx); + range.len = xatoull_sfx(arg_l, kmg_i_suffixes); if (opts & OPT_m) - range.minlen = xatoull_sfx(arg_m, fstrim_sfx); + range.minlen = xatoull_sfx(arg_m, kmg_i_suffixes); mp = argv[optind]; if (find_block_device(mp)) { -- cgit v1.2.3-55-g6feb From 326edc3e375d6d5be205d4b1592211bf15e33bcd Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Thu, 22 Dec 2016 14:36:49 +0100 Subject: Tweak some config defaults; fix MODPROBE_SMALL ordering in "make config" Signed-off-by: Denys Vlasenko --- include/applets.h.sh | 8 ++++---- init/init.c | 2 +- modutils/Config.src | 31 +++++++++++++++++++++++++++++++ modutils/modprobe-small.c | 34 +++------------------------------- shell/ash.c | 5 ++--- 5 files changed, 41 insertions(+), 39 deletions(-) (limited to 'include') diff --git a/include/applets.h.sh b/include/applets.h.sh index bab4e0d72..be8b92404 100755 --- a/include/applets.h.sh +++ b/include/applets.h.sh @@ -6,9 +6,6 @@ # CONFIG_applet names grep ^IF_ applets.h | grep -v IF_FEATURE_ | sed 's/IF_\([A-Z0-9._-]*\)(.*/\1/' \ | grep -v MODPROBE_SMALL \ -| sed 's/BB_SYSCTL/SYSCTL/' \ -| sed 's/TEST1/[/' \ -| sed 's/TEST2/[[/' \ | sort | uniq \ >applets_APP1 @@ -17,8 +14,11 @@ grep ^IF_ applets.h | sed -e's/ //g' -e's/.*(\([a-z[][^,]*\),.*/\1/' \ | grep -v '^bash$' \ | grep -v '^sh$' \ | tr a-z A-Z \ +| sed 's/^SYSCTL$/BB_SYSCTL/' \ +| sed 's/^\[\[$/TEST1/' \ +| sed 's/^\[$/TEST2/' \ | sort | uniq \ >applets_APP2 diff -u applets_APP1 applets_APP2 >applets_APP.diff -rm applets_APP1 applets_APP2 +#rm applets_APP1 applets_APP2 diff --git a/init/init.c b/init/init.c index 0813d1b5f..08cfa2f8c 100644 --- a/init/init.c +++ b/init/init.c @@ -83,7 +83,7 @@ //config: //config:config FEATURE_INIT_COREDUMPS //config: bool "Support dumping core for child processes (debugging only)" -//config: default y +//config: default n # not Y because this is a debug option //config: depends on INIT || LINUXRC //config: help //config: If this option is enabled and the file /.init_enable_core diff --git a/modutils/Config.src b/modutils/Config.src index 4227f356a..84ff34a08 100644 --- a/modutils/Config.src +++ b/modutils/Config.src @@ -5,6 +5,37 @@ menu "Linux Module Utilities" +config MODPROBE_SMALL + bool "Simplified modutils" + default y + select PLATFORM_LINUX + help + Simplified modutils. + + With this option modprobe does not require modules.dep file + and does not use /etc/modules.conf file. + It scans module files in /lib/modules/`uname -r` and + determines dependencies and module alias names on the fly. + This may make module loading slower, most notably + when one needs to load module by alias (this requires + scanning through module _bodies_). + + At the first attempt to load a module by alias modprobe + will try to generate modules.dep.bb file in order to speed up + future loads by alias. Failure to do so (read-only /lib/modules, + etc) is not reported, and future modprobes will be slow too. + + NB: modules.dep.bb file format is not compatible + with modules.dep file as created/used by standard module tools. + + Additional module parameters can be stored in + /etc/modules/$module_name files. + + Apart from modprobe, other utilities are also provided: + - insmod is an alias to modprobe + - rmmod is an alias to modprobe -r + - depmod generates modules.dep.bb + INSERT comment "Options common to multiple modutils" diff --git a/modutils/modprobe-small.c b/modutils/modprobe-small.c index 51ba42f7a..e3a349b4e 100644 --- a/modutils/modprobe-small.c +++ b/modutils/modprobe-small.c @@ -7,37 +7,9 @@ * * Licensed under GPLv2, see file LICENSE in this source tree. */ -//config:config MODPROBE_SMALL -//config: bool "Simplified modutils" -//config: default y -//config: select PLATFORM_LINUX -//config: help -//config: Simplified modutils. -//config: -//config: With this option modprobe does not require modules.dep file -//config: and does not use /etc/modules.conf file. -//config: It scans module files in /lib/modules/`uname -r` and -//config: determines dependencies and module alias names on the fly. -//config: This may make module loading slower, most notably -//config: when one needs to load module by alias (this requires -//config: scanning through module _bodies_). -//config: -//config: At the first attempt to load a module by alias modprobe -//config: will try to generate modules.dep.bb file in order to speed up -//config: future loads by alias. Failure to do so (read-only /lib/modules, -//config: etc) is not reported, and future modprobes will be slow too. -//config: -//config: NB: modules.dep.bb file format is not compatible -//config: with modules.dep file as created/used by standard module tools. -//config: -//config: Additional module parameters can be stored in -//config: /etc/modules/$module_name files. -//config: -//config: Apart from modprobe, other utilities are also provided: -//config: - insmod is an alias to modprobe -//config: - rmmod is an alias to modprobe -r -//config: - depmod generates modules.dep.bb -//config: + +/* config MODPROBE_SMALL is defined in Config.src to ensure better "make config" order */ + //config:config FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE //config: bool "Accept module options on modprobe command line" //config: default y diff --git a/shell/ash.c b/shell/ash.c index 802626d4e..89339182e 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -117,7 +117,7 @@ //config: //config:config ASH_INTERNAL_GLOB //config: bool "Use internal glob() implementation" -//config: default n +//config: default y # Y is bigger, but because of uclibc glob() bug, let Y be default for now //config: depends on ASH //config: help //config: Do not use glob() function from libc, use internal implementation. @@ -218,11 +218,10 @@ //config: //config:config ASH_MAIL //config: bool "Check for new mail on interactive shells" -//config: default n +//config: default y //config: depends on ASH //config: help //config: Enable "check for new mail" function in the ash shell. -//config: //applet:IF_ASH(APPLET(ash, BB_DIR_BIN, BB_SUID_DROP)) //applet:IF_FEATURE_SH_IS_ASH(APPLET_ODDNAME(sh, ash, BB_DIR_BIN, BB_SUID_DROP, sh)) -- cgit v1.2.3-55-g6feb From a1cd0d9849946e0627484ec6b6435837c853a113 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 23 Dec 2016 15:12:27 +0100 Subject: modprobe-small: make applets individually selectable Signed-off-by: Denys Vlasenko --- include/applets.h.sh | 3 +-- make_single_applets.sh | 7 ++++++- modutils/depmod.c | 7 ++++--- modutils/insmod.c | 5 +++-- modutils/lsmod.c | 11 ++++++----- modutils/modprobe-small.c | 24 ++++++++++++------------ modutils/modprobe.c | 11 ++++++----- modutils/rmmod.c | 5 +++-- 8 files changed, 41 insertions(+), 32 deletions(-) (limited to 'include') diff --git a/include/applets.h.sh b/include/applets.h.sh index be8b92404..be117cf84 100755 --- a/include/applets.h.sh +++ b/include/applets.h.sh @@ -4,8 +4,7 @@ # enabling it. Run it after applets.h is generated. # CONFIG_applet names -grep ^IF_ applets.h | grep -v IF_FEATURE_ | sed 's/IF_\([A-Z0-9._-]*\)(.*/\1/' \ -| grep -v MODPROBE_SMALL \ +grep ^IF_ applets.h | grep -v ^IF_FEATURE_ | sed 's/IF_\([A-Z0-9._-]*\)(.*/\1/' \ | sort | uniq \ >applets_APP1 diff --git a/make_single_applets.sh b/make_single_applets.sh index 5b9393e33..6473e4ddd 100755 --- a/make_single_applets.sh +++ b/make_single_applets.sh @@ -14,7 +14,6 @@ apps="` grep ^IF_ include/applets.h \ | grep -v ^IF_FEATURE_ \ | sed 's/IF_\([A-Z0-9._-]*\)(.*/\1/' \ -| grep -v ^MODPROBE_SMALL \ | sort | uniq `" @@ -46,6 +45,11 @@ for app in $apps; do : $((fail++)) echo "Build error for ${app}" mv .config busybox_config_${app} + elif ! grep -q '^#define NUM_APPLETS 1$' include/NUM_APPLETS.h; then + mv busybox busybox_${app} + : $((fail++)) + echo "NUM_APPLETS != 1 for ${app}: `cat include/NUM_APPLETS.h`" + mv .config busybox_config_${app} else mv busybox busybox_${app} rm busybox_make_${app}.log @@ -53,5 +57,6 @@ for app in $apps; do mv .config.SV .config #exit done +touch .config # or else next "make" can be confused echo "Failures: $fail" test $fail = 0 # set exitcode diff --git a/modutils/depmod.c b/modutils/depmod.c index b9347027e..cfa9abb1a 100644 --- a/modutils/depmod.c +++ b/modutils/depmod.c @@ -9,15 +9,16 @@ */ //config:config DEPMOD //config: bool "depmod" -//config: default n -//config: depends on !MODPROBE_SMALL +//config: default y //config: select PLATFORM_LINUX //config: help //config: depmod generates modules.dep (and potentially modules.alias //config: and modules.symbols) that contain dependency information //config: for modprobe. -//applet:IF_DEPMOD(APPLET(depmod, BB_DIR_SBIN, BB_SUID_DROP)) +//kbuild:ifneq ($(CONFIG_MODPROBE_SMALL),y) +//applet:IF_DEPMOD(IF_NOT_MODPROBE_SMALL(APPLET(depmod, BB_DIR_SBIN, BB_SUID_DROP))) +//kbuild:endif //kbuild:lib-$(CONFIG_DEPMOD) += depmod.o modutils.o diff --git a/modutils/insmod.c b/modutils/insmod.c index 2ebf4beb9..5949fe551 100644 --- a/modutils/insmod.c +++ b/modutils/insmod.c @@ -9,14 +9,15 @@ //config:config INSMOD //config: bool "insmod" //config: default n -//config: depends on !MODPROBE_SMALL //config: select PLATFORM_LINUX //config: help //config: insmod is used to load specified modules in the running kernel. -//applet:IF_INSMOD(APPLET(insmod, BB_DIR_SBIN, BB_SUID_DROP)) +//applet:IF_INSMOD(IF_NOT_MODPROBE_SMALL(APPLET(insmod, BB_DIR_SBIN, BB_SUID_DROP))) +//kbuild:ifneq ($(CONFIG_MODPROBE_SMALL),y) //kbuild:lib-$(CONFIG_INSMOD) += insmod.o modutils.o +//kbuild:endif #include "libbb.h" #include "modutils.h" diff --git a/modutils/lsmod.c b/modutils/lsmod.c index ee85fb0fb..24589420a 100644 --- a/modutils/lsmod.c +++ b/modutils/lsmod.c @@ -9,25 +9,26 @@ */ //config:config LSMOD //config: bool "lsmod" -//config: default n -//config: depends on !MODPROBE_SMALL +//config: default y //config: select PLATFORM_LINUX //config: help //config: lsmod is used to display a list of loaded modules. //config: //config:config FEATURE_LSMOD_PRETTY_2_6_OUTPUT //config: bool "Pretty output" -//config: default n -//config: depends on LSMOD +//config: default y +//config: depends on LSMOD && !MODPROBE_SMALL //config: select PLATFORM_LINUX //config: help //config: This option makes output format of lsmod adjusted to //config: the format of module-init-tools for Linux kernel 2.6. //config: Increases size somewhat. -//applet:IF_LSMOD(APPLET(lsmod, BB_DIR_SBIN, BB_SUID_DROP)) +//applet:IF_LSMOD(IF_NOT_MODPROBE_SMALL(APPLET(lsmod, BB_DIR_SBIN, BB_SUID_DROP))) +//kbuild:ifneq ($(CONFIG_MODPROBE_SMALL),y) //kbuild:lib-$(CONFIG_LSMOD) += lsmod.o modutils.o +//kbuild:endif //usage:#if !ENABLE_MODPROBE_SMALL //usage:#define lsmod_trivial_usage diff --git a/modutils/modprobe-small.c b/modutils/modprobe-small.c index e3a349b4e..652ff4dfa 100644 --- a/modutils/modprobe-small.c +++ b/modutils/modprobe-small.c @@ -25,11 +25,11 @@ //config: help //config: Check if the module is already loaded. -//applet:IF_MODPROBE_SMALL(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP)) -//applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(depmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, depmod)) -//applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, insmod)) -//applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, lsmod)) -//applet:IF_MODPROBE_SMALL(APPLET_ODDNAME(rmmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, rmmod)) +//applet:IF_MODPROBE(IF_MODPROBE_SMALL(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))) +//applet:IF_DEPMOD(IF_MODPROBE_SMALL(APPLET_ODDNAME(depmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, depmod))) +//applet:IF_INSMOD(IF_MODPROBE_SMALL(APPLET_ODDNAME(insmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, insmod))) +//applet:IF_LSMOD(IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, lsmod))) +//applet:IF_RMMOD(IF_MODPROBE_SMALL(APPLET_ODDNAME(rmmod, modprobe, BB_DIR_SBIN, BB_SUID_DROP, rmmod))) //kbuild:lib-$(CONFIG_MODPROBE_SMALL) += modprobe-small.o @@ -930,7 +930,7 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv) IF_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE(char *options;) /* are we lsmod? -> just dump /proc/modules */ - if ('l' == applet0) { + if (ENABLE_LSMOD && 'l' == applet0) { xprint_and_close_file(xfopen_for_read("/proc/modules")); return EXIT_SUCCESS; } @@ -940,14 +940,14 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv) /* Prevent ugly corner cases with no modules at all */ modinfo = xzalloc(sizeof(modinfo[0])); - if ('i' != applet0) { /* not insmod */ + if (!ENABLE_INSMOD || 'i' != applet0) { /* not insmod */ /* Goto modules directory */ xchdir(CONFIG_DEFAULT_MODULES_DIR); } uname(&uts); /* never fails */ /* depmod? */ - if ('d' == applet0) { + if (ENABLE_DEPMOD && 'd' == applet0) { /* Supported: * -n: print result to stdout * -a: process all modules (default) @@ -986,11 +986,11 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv) argv += optind; /* are we rmmod? -> simulate modprobe -r */ - if ('r' == applet0) { + if (ENABLE_RMMOD && 'r' == applet0) { option_mask32 |= OPT_r; } - if ('i' != applet0) { /* not insmod */ + if (!ENABLE_INSMOD || 'i' != applet0) { /* not insmod */ /* Goto $VERSION directory */ xchdir(uts.release); } @@ -1014,7 +1014,7 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv) argv[1] = NULL; #endif - if ('i' == applet0) { /* insmod */ + if (ENABLE_INSMOD && 'i' == applet0) { /* insmod */ size_t len; void *map; @@ -1034,7 +1034,7 @@ int modprobe_main(int argc UNUSED_PARAM, char **argv) } /* Try to load modprobe.dep.bb */ - if ('r' != applet0) { /* not rmmod */ + if (!ENABLE_RMMOD || 'r' != applet0) { /* not rmmod */ load_dep_bb(); } diff --git a/modutils/modprobe.c b/modutils/modprobe.c index d404ef92f..09e3de6c3 100644 --- a/modutils/modprobe.c +++ b/modutils/modprobe.c @@ -9,8 +9,7 @@ */ //config:config MODPROBE //config: bool "modprobe" -//config: default n -//config: depends on !MODPROBE_SMALL +//config: default y //config: select PLATFORM_LINUX //config: help //config: Handle the loading of modules, and their dependencies on a high @@ -18,8 +17,8 @@ //config: //config:config FEATURE_MODPROBE_BLACKLIST //config: bool "Blacklist support" -//config: default n -//config: depends on MODPROBE +//config: default y +//config: depends on MODPROBE && !MODPROBE_SMALL //config: select PLATFORM_LINUX //config: help //config: Say 'y' here to enable support for the 'blacklist' command in @@ -28,9 +27,11 @@ //config: hardware autodetection scripts to load modules like evdev, frame //config: buffer drivers etc. -//applet:IF_MODPROBE(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP)) +//applet:IF_MODPROBE(IF_NOT_MODPROBE_SMALL(APPLET(modprobe, BB_DIR_SBIN, BB_SUID_DROP))) +//kbuild:ifneq ($(CONFIG_MODPROBE_SMALL),y) //kbuild:lib-$(CONFIG_MODPROBE) += modprobe.o modutils.o +//kbuild:endif #include "libbb.h" #include "modutils.h" diff --git a/modutils/rmmod.c b/modutils/rmmod.c index e0358838a..4c4d50885 100644 --- a/modutils/rmmod.c +++ b/modutils/rmmod.c @@ -10,14 +10,15 @@ //config:config RMMOD //config: bool "rmmod" //config: default n -//config: depends on !MODPROBE_SMALL //config: select PLATFORM_LINUX //config: help //config: rmmod is used to unload specified modules from the kernel. -//applet:IF_RMMOD(APPLET(rmmod, BB_DIR_SBIN, BB_SUID_DROP)) +//applet:IF_RMMOD(IF_NOT_MODPROBE_SMALL(APPLET(rmmod, BB_DIR_SBIN, BB_SUID_DROP))) +//kbuild:ifneq ($(CONFIG_MODPROBE_SMALL),y) //kbuild:lib-$(CONFIG_RMMOD) += rmmod.o modutils.o +//kbuild:endif //usage:#if !ENABLE_MODPROBE_SMALL //usage:#define rmmod_trivial_usage -- cgit v1.2.3-55-g6feb