diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2015-01-09 12:02:17 -0600 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2015-01-09 12:08:32 -0600 |
commit | 86098e08d81361365729c0d65ec320ac48269646 (patch) | |
tree | 49a64ac1d875387f8f40390a01e301e4a82cafeb /package/busybox/patches/005-busybox-1.23.0-modprobe.patch | |
parent | 2f6b24f42d1ab900fd29b03c0f8b1f15e0303b04 (diff) |
update busybox to 2.23.0
add upstream patches.
Fix the busybox disable mechanism. When you choose less or
lsusb full blown version, be sure busybox applet is disabled.
Diffstat (limited to 'package/busybox/patches/005-busybox-1.23.0-modprobe.patch')
-rw-r--r-- | package/busybox/patches/005-busybox-1.23.0-modprobe.patch | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/package/busybox/patches/005-busybox-1.23.0-modprobe.patch b/package/busybox/patches/005-busybox-1.23.0-modprobe.patch new file mode 100644 index 000000000..5b28cdec5 --- /dev/null +++ b/package/busybox/patches/005-busybox-1.23.0-modprobe.patch @@ -0,0 +1,114 @@ +--- busybox-1.23.0/modutils/depmod.c ++++ busybox-1.23.0-modprobe/modutils/depmod.c +@@ -51,7 +51,11 @@ static int FAST_FUNC parse_module(const + + info->dnext = info->dprev = info; + info->name = xstrdup(fname + 2); /* skip "./" */ +- info->modname = xstrdup(filename2modname(fname, modname)); ++ info->modname = xstrdup( ++ filename2modname( ++ bb_get_last_path_component_nostrip(fname), ++ modname ++ )); + for (ptr = image; ptr < image + len - 10; ptr++) { + if (strncmp(ptr, "depends=", 8) == 0) { + char *u; +@@ -242,17 +246,18 @@ int depmod_main(int argc UNUSED_PARAM, c + if (!(option_mask32 & OPT_n)) + xfreopen_write("modules.alias", stdout); + for (m = modules; m != NULL; m = m->next) { ++ char modname[MODULE_NAME_LEN]; + const char *fname = bb_basename(m->name); +- int fnlen = strchrnul(fname, '.') - fname; ++ filename2modname(fname, modname); + while (m->aliases) { + /* Last word can well be m->modname instead, + * but depmod from module-init-tools 3.4 + * uses module basename, i.e., no s/-/_/g. + * (pathname and .ko.* are still stripped) + * Mimicking that... */ +- printf("alias %s %.*s\n", ++ printf("alias %s %s\n", + (char*)llist_pop(&m->aliases), +- fnlen, fname); ++ modname); + } + } + #endif +@@ -260,12 +265,13 @@ int depmod_main(int argc UNUSED_PARAM, c + if (!(option_mask32 & OPT_n)) + xfreopen_write("modules.symbols", stdout); + for (m = modules; m != NULL; m = m->next) { ++ char modname[MODULE_NAME_LEN]; + const char *fname = bb_basename(m->name); +- int fnlen = strchrnul(fname, '.') - fname; ++ filename2modname(fname, modname); + while (m->symbols) { +- printf("alias symbol:%s %.*s\n", ++ printf("alias symbol:%s %s\n", + (char*)llist_pop(&m->symbols), +- fnlen, fname); ++ modname); + } + } + #endif +--- busybox-1.23.0/modutils/modprobe.c ++++ busybox-1.23.0-modprobe/modutils/modprobe.c +@@ -238,17 +238,6 @@ static void add_probe(const char *name) + { + struct module_entry *m; + +- /* +- * get_or_add_modentry() strips path from name and works +- * on remaining basename. +- * This would make "rmmod dir/name" and "modprobe dir/name" +- * to work like "rmmod name" and "modprobe name", +- * which is wrong, and can be abused via implicit modprobing: +- * "ifconfig /usbserial up" tries to modprobe netdev-/usbserial. +- */ +- if (strchr(name, '/')) +- bb_error_msg_and_die("malformed module name '%s'", name); +- + m = get_or_add_modentry(name); + if (!(option_mask32 & (OPT_REMOVE | OPT_SHOW_DEPS)) + && (m->flags & MODULE_FLAG_LOADED) +--- busybox-1.23.0/modutils/modprobe-small.c ++++ busybox-1.23.0-modprobe/modutils/modprobe-small.c +@@ -149,9 +149,13 @@ static void replace(char *s, char what, + static char *filename2modname(const char *filename, char *modname) + { + int i; +- char *from; ++ const char *from; + +- from = bb_get_last_path_component_nostrip(filename); ++ // Disabled since otherwise "modprobe dir/name" would work ++ // as if it is "modprobe name". It is unclear why ++ // 'basenamization' was here in the first place. ++ //from = bb_get_last_path_component_nostrip(filename); ++ from = filename; + for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++) + modname[i] = (from[i] == '-') ? '_' : from[i]; + modname[i] = '\0'; +--- busybox-1.23.0/modutils/modutils.c ++++ busybox-1.23.0-modprobe/modutils/modutils.c +@@ -48,13 +48,17 @@ int FAST_FUNC string_to_llist(char *stri + char* FAST_FUNC filename2modname(const char *filename, char *modname) + { + int i; +- char *from; ++ const char *from; + + if (filename == NULL) + return NULL; + if (modname == NULL) + modname = xmalloc(MODULE_NAME_LEN); +- from = bb_get_last_path_component_nostrip(filename); ++ // Disabled since otherwise "modprobe dir/name" would work ++ // as if it is "modprobe name". It is unclear why ++ // 'basenamization' was here in the first place. ++ //from = bb_get_last_path_component_nostrip(filename); ++ from = filename; + for (i = 0; i < (MODULE_NAME_LEN-1) && from[i] != '\0' && from[i] != '.'; i++) + modname[i] = (from[i] == '-') ? '_' : from[i]; + modname[i] = '\0'; |