insmod: clarify module_name / file_name distinction
No binary (build failed)
—
(log yok)
| @@ -1864,8 +1864,12 @@ | |
| "\ninotifyd waits for PROG to exit." \ | |
| "\nWhen x event happens for all FILEs, inotifyd exits" \ | |
| + | /* 2.6 style insmod has no options and required filename |
| + | * (not module name - .ko can't be omitted) */ |
| #define insmod_trivial_usage \ | |
| - | USE_FEATURE_2_4_MODULES("[OPTION]... ") "MODULE [symbol=value]..." |
| + | USE_FEATURE_2_4_MODULES("[OPTION]... MODULE ") \ |
| + | SKIP_FEATURE_2_4_MODULES("FILE ") \ |
| + | "[symbol=value]..." |
| #define insmod_full_usage "\n\n" \ | |
| "Load the specified kernel modules into the kernel" \ | |
| USE_FEATURE_2_4_MODULES( "\n" \ | |
| @@ -16,9 +16,17 @@ int insmod_main(int argc UNUSED_PARAM, char **argv) | |
| char *filename; | |
| int rc; | |
| + | /* Compat note: |
| + | * 2.6 style insmod has no options and required filename |
| + | * (not module name - .ko can't be omitted). |
| + | * 2.4 style insmod can take module name without .ko |
| + | * and performs module search in default directories |
| + | * or in $MODPATH. |
| + | */ |
| + | |
| USE_FEATURE_2_4_MODULES( | |
| getopt32(argv, INSMOD_OPTS INSMOD_ARGS); | |
| - | argv += optind-1; |
| + | argv += optind - 1; |
| ); | |
| filename = *++argv; | |
| @@ -3810,7 +3810,7 @@ static void print_load_map(struct obj_file *f UNUSED_PARAM) | |
| } | |
| #endif | |
| - | int FAST_FUNC bb_init_module_24(const char *m_filename, const char *options UNUSED_PARAM) |
| + | int FAST_FUNC bb_init_module_24(const char *m_filename, const char *options) |
| { | |
| int k_crcs; | |
| unsigned long m_size; | |
| @@ -3906,13 +3906,13 @@ int FAST_FUNC bb_init_module_24(const char *m_filename, const char *options UNUS | |
| m_addr = create_module(m_name, m_size); | |
| if (m_addr == (ElfW(Addr))(-1)) switch (errno) { | |
| - | case EEXIST: |
| - | bb_error_msg_and_die("a module named %s already exists", m_name); |
| - | case ENOMEM: |
| - | bb_error_msg_and_die("can't allocate kernel memory for module; needed %lu bytes", |
| - | m_size); |
| - | default: |
| - | bb_perror_msg_and_die("create_module: %s", m_name); |
| + | case EEXIST: |
| + | bb_error_msg_and_die("a module named %s already exists", m_name); |
| + | case ENOMEM: |
| + | bb_error_msg_and_die("can't allocate kernel memory for module; needed %lu bytes", |
| + | m_size); |
| + | default: |
| + | bb_perror_msg_and_die("create_module: %s", m_name); |
| } | |
| #if !LOADBITS | |
| @@ -23,7 +23,7 @@ const char *moderror(int err) FAST_FUNC; | |
| llist_t *llist_find(llist_t *first, const char *str) FAST_FUNC; | |
| void replace(char *s, char what, char with) FAST_FUNC; | |
| char *replace_underscores(char *s) FAST_FUNC; | |
| - | int string_to_llist(char *string, llist_t **llist, const char *delim) FAST_FUNC ; |
| + | int string_to_llist(char *string, llist_t **llist, const char *delim) FAST_FUNC; |
| char *filename2modname(const char *filename, char *modname) FAST_FUNC; | |
| char *parse_cmdline_module_options(char **argv) FAST_FUNC; | |