aboutsummaryrefslogtreecommitdiff
path: root/modutils/insmod.c
diff options
context:
space:
mode:
Diffstat (limited to 'modutils/insmod.c')
-rw-r--r--modutils/insmod.c126
1 files changed, 63 insertions, 63 deletions
diff --git a/modutils/insmod.c b/modutils/insmod.c
index 56e78e833..b45357a69 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -247,7 +247,7 @@
247#ifndef MODUTILS_MODULE_H 247#ifndef MODUTILS_MODULE_H
248static const int MODUTILS_MODULE_H = 1; 248static const int MODUTILS_MODULE_H = 1;
249 249
250#ident "$Id: insmod.c,v 1.96 2003/03/13 18:57:08 andersen Exp $" 250#ident "$Id: insmod.c,v 1.97 2003/03/19 09:12:33 mjn3 Exp $"
251 251
252/* This file contains the structures used by the 2.0 and 2.1 kernels. 252/* This file contains the structures used by the 2.0 and 2.1 kernels.
253 We do not use the kernel headers directly because we do not wish 253 We do not use the kernel headers directly because we do not wish
@@ -468,7 +468,7 @@ int delete_module(const char *);
468#ifndef MODUTILS_OBJ_H 468#ifndef MODUTILS_OBJ_H
469static const int MODUTILS_OBJ_H = 1; 469static const int MODUTILS_OBJ_H = 1;
470 470
471#ident "$Id: insmod.c,v 1.96 2003/03/13 18:57:08 andersen Exp $" 471#ident "$Id: insmod.c,v 1.97 2003/03/19 09:12:33 mjn3 Exp $"
472 472
473/* The relocatable object is manipulated using elfin types. */ 473/* The relocatable object is manipulated using elfin types. */
474 474
@@ -769,12 +769,12 @@ static int check_module_name_match(const char *filename, struct stat *statbuf,
769 if (fullname[0] == '\0') 769 if (fullname[0] == '\0')
770 return (FALSE); 770 return (FALSE);
771 else { 771 else {
772 char *tmp, *tmp1 = xstrdup(filename); 772 char *tmp, *tmp1 = bb_xstrdup(filename);
773 tmp = get_last_path_component(tmp1); 773 tmp = bb_get_last_path_component(tmp1);
774 if (strcmp(tmp, fullname) == 0) { 774 if (strcmp(tmp, fullname) == 0) {
775 free(tmp1); 775 free(tmp1);
776 /* Stop searching if we find a match */ 776 /* Stop searching if we find a match */
777 m_filename = xstrdup(filename); 777 m_filename = bb_xstrdup(filename);
778 return (TRUE); 778 return (TRUE);
779 } 779 }
780 free(tmp1); 780 free(tmp1);
@@ -1700,7 +1700,7 @@ obj_add_symbol(struct obj_file *f, const char *name,
1700 /* Don't report an error if the symbol is coming from 1700 /* Don't report an error if the symbol is coming from
1701 the kernel or some external module. */ 1701 the kernel or some external module. */
1702 if (secidx <= SHN_HIRESERVE) 1702 if (secidx <= SHN_HIRESERVE)
1703 error_msg("%s multiply defined", name); 1703 bb_error_msg("%s multiply defined", name);
1704 return sym; 1704 return sym;
1705 } 1705 }
1706 } 1706 }
@@ -1713,7 +1713,7 @@ obj_add_symbol(struct obj_file *f, const char *name,
1713 1713
1714 if (ELFW(ST_BIND)(info) == STB_LOCAL && symidx != -1) { 1714 if (ELFW(ST_BIND)(info) == STB_LOCAL && symidx != -1) {
1715 if (symidx >= f->local_symtab_size) 1715 if (symidx >= f->local_symtab_size)
1716 error_msg("local symbol %s with index %ld exceeds local_symtab_size %ld", 1716 bb_error_msg("local symbol %s with index %ld exceeds local_symtab_size %ld",
1717 name, (long) symidx, (long) f->local_symtab_size); 1717 name, (long) symidx, (long) f->local_symtab_size);
1718 else 1718 else
1719 f->local_symtab[symidx] = sym; 1719 f->local_symtab[symidx] = sym;
@@ -1996,7 +1996,7 @@ old_process_module_arguments(struct obj_file *f, int argc, char **argv)
1996 1996
1997 /* Also check that the parameter was not resolved from the kernel. */ 1997 /* Also check that the parameter was not resolved from the kernel. */
1998 if (sym == NULL || sym->secidx > SHN_HIRESERVE) { 1998 if (sym == NULL || sym->secidx > SHN_HIRESERVE) {
1999 error_msg("symbol for parameter %s not found", p); 1999 bb_error_msg("symbol for parameter %s not found", p);
2000 return 0; 2000 return 0;
2001 } 2001 }
2002 2002
@@ -2009,7 +2009,7 @@ old_process_module_arguments(struct obj_file *f, int argc, char **argv)
2009 str = alloca(strlen(q)); 2009 str = alloca(strlen(q));
2010 for (r = str, q++; *q != '"'; ++q, ++r) { 2010 for (r = str, q++; *q != '"'; ++q, ++r) {
2011 if (*q == '\0') { 2011 if (*q == '\0') {
2012 error_msg("improperly terminated string argument for %s", p); 2012 bb_error_msg("improperly terminated string argument for %s", p);
2013 return 0; 2013 return 0;
2014 } else if (*q == '\\') 2014 } else if (*q == '\\')
2015 switch (*++q) { 2015 switch (*++q) {
@@ -2139,9 +2139,9 @@ static int old_get_kernel_symbols(const char *m_name)
2139 nks = get_kernel_syms(NULL); 2139 nks = get_kernel_syms(NULL);
2140 if (nks <= 0) { 2140 if (nks <= 0) {
2141 if (nks) 2141 if (nks)
2142 perror_msg("get_kernel_syms: %s", m_name); 2142 bb_perror_msg("get_kernel_syms: %s", m_name);
2143 else 2143 else
2144 error_msg("No kernel symbols"); 2144 bb_error_msg("No kernel symbols");
2145 return 0; 2145 return 0;
2146 } 2146 }
2147 2147
@@ -2322,7 +2322,7 @@ old_init_module(const char *m_name, struct obj_file *f,
2322 m_size | (flag_autoclean ? OLD_MOD_AUTOCLEAN 2322 m_size | (flag_autoclean ? OLD_MOD_AUTOCLEAN
2323 : 0), &routines, symtab); 2323 : 0), &routines, symtab);
2324 if (ret) 2324 if (ret)
2325 perror_msg("init_module: %s", m_name); 2325 bb_perror_msg("init_module: %s", m_name);
2326 2326
2327 free(image); 2327 free(image);
2328 free(symtab); 2328 free(symtab);
@@ -2365,7 +2365,7 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
2365 p = get_modinfo_value(f, key); 2365 p = get_modinfo_value(f, key);
2366 key += 5; 2366 key += 5;
2367 if (p == NULL) { 2367 if (p == NULL) {
2368 error_msg("invalid parameter %s", key); 2368 bb_error_msg("invalid parameter %s", key);
2369 return 0; 2369 return 0;
2370 } 2370 }
2371 2371
@@ -2380,7 +2380,7 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
2380 2380
2381 /* Also check that the parameter was not resolved from the kernel. */ 2381 /* Also check that the parameter was not resolved from the kernel. */
2382 if (sym == NULL || sym->secidx > SHN_HIRESERVE) { 2382 if (sym == NULL || sym->secidx > SHN_HIRESERVE) {
2383 error_msg("symbol for parameter %s not found", key); 2383 bb_error_msg("symbol for parameter %s not found", key);
2384 return 0; 2384 return 0;
2385 } 2385 }
2386 2386
@@ -2408,7 +2408,7 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
2408 str = alloca(strlen(q)); 2408 str = alloca(strlen(q));
2409 for (r = str, q++; *q != '"'; ++q, ++r) { 2409 for (r = str, q++; *q != '"'; ++q, ++r) {
2410 if (*q == '\0') { 2410 if (*q == '\0') {
2411 error_msg("improperly terminated string argument for %s", 2411 bb_error_msg("improperly terminated string argument for %s",
2412 key); 2412 key);
2413 return 0; 2413 return 0;
2414 } else if (*q == '\\') 2414 } else if (*q == '\\')
@@ -2502,7 +2502,7 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
2502 /* Get the size of each member */ 2502 /* Get the size of each member */
2503 /* Probably we should do that outside the loop ? */ 2503 /* Probably we should do that outside the loop ? */
2504 if (!isdigit(*(p + 1))) { 2504 if (!isdigit(*(p + 1))) {
2505 error_msg("parameter type 'c' for %s must be followed by" 2505 bb_error_msg("parameter type 'c' for %s must be followed by"
2506 " the maximum size", key); 2506 " the maximum size", key);
2507 return 0; 2507 return 0;
2508 } 2508 }
@@ -2510,7 +2510,7 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
2510 2510
2511 /* Check length */ 2511 /* Check length */
2512 if (strlen(str) >= charssize) { 2512 if (strlen(str) >= charssize) {
2513 error_msg("string too long for %s (max %ld)", key, 2513 bb_error_msg("string too long for %s (max %ld)", key,
2514 charssize - 1); 2514 charssize - 1);
2515 return 0; 2515 return 0;
2516 } 2516 }
@@ -2539,7 +2539,7 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
2539 break; 2539 break;
2540 2540
2541 default: 2541 default:
2542 error_msg("unknown parameter type '%c' for %s", *p, key); 2542 bb_error_msg("unknown parameter type '%c' for %s", *p, key);
2543 return 0; 2543 return 0;
2544 } 2544 }
2545 } 2545 }
@@ -2558,21 +2558,21 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
2558 2558
2559 case ',': 2559 case ',':
2560 if (++n > max) { 2560 if (++n > max) {
2561 error_msg("too many values for %s (max %d)", key, max); 2561 bb_error_msg("too many values for %s (max %d)", key, max);
2562 return 0; 2562 return 0;
2563 } 2563 }
2564 ++q; 2564 ++q;
2565 break; 2565 break;
2566 2566
2567 default: 2567 default:
2568 error_msg("invalid argument syntax for %s", key); 2568 bb_error_msg("invalid argument syntax for %s", key);
2569 return 0; 2569 return 0;
2570 } 2570 }
2571 } 2571 }
2572 2572
2573 end_of_arg: 2573 end_of_arg:
2574 if (n < min) { 2574 if (n < min) {
2575 error_msg("too few values for %s (min %d)", key, min); 2575 bb_error_msg("too few values for %s (min %d)", key, min);
2576 return 0; 2576 return 0;
2577 } 2577 }
2578 2578
@@ -2641,7 +2641,7 @@ static int new_get_kernel_symbols(void)
2641 module_names = xrealloc(module_names, bufsize = ret); 2641 module_names = xrealloc(module_names, bufsize = ret);
2642 goto retry_modules_load; 2642 goto retry_modules_load;
2643 } 2643 }
2644 perror_msg("QM_MODULES"); 2644 bb_perror_msg("QM_MODULES");
2645 return 0; 2645 return 0;
2646 } 2646 }
2647 2647
@@ -2661,7 +2661,7 @@ static int new_get_kernel_symbols(void)
2661 /* The module was removed out from underneath us. */ 2661 /* The module was removed out from underneath us. */
2662 continue; 2662 continue;
2663 } 2663 }
2664 perror_msg("query_module: QM_INFO: %s", mn); 2664 bb_perror_msg("query_module: QM_INFO: %s", mn);
2665 return 0; 2665 return 0;
2666 } 2666 }
2667 2667
@@ -2676,7 +2676,7 @@ static int new_get_kernel_symbols(void)
2676 /* The module was removed out from underneath us. */ 2676 /* The module was removed out from underneath us. */
2677 continue; 2677 continue;
2678 default: 2678 default:
2679 perror_msg("query_module: QM_SYMBOLS: %s", mn); 2679 bb_perror_msg("query_module: QM_SYMBOLS: %s", mn);
2680 return 0; 2680 return 0;
2681 } 2681 }
2682 } 2682 }
@@ -2702,7 +2702,7 @@ static int new_get_kernel_symbols(void)
2702 syms = xrealloc(syms, bufsize = ret); 2702 syms = xrealloc(syms, bufsize = ret);
2703 goto retry_kern_sym_load; 2703 goto retry_kern_sym_load;
2704 } 2704 }
2705 perror_msg("kernel: QM_SYMBOLS"); 2705 bb_perror_msg("kernel: QM_SYMBOLS");
2706 return 0; 2706 return 0;
2707 } 2707 }
2708 nksyms = nsyms = ret; 2708 nksyms = nsyms = ret;
@@ -2863,7 +2863,7 @@ new_init_module(const char *m_name, struct obj_file *f,
2863 2863
2864 sec = obj_find_section(f, ".this"); 2864 sec = obj_find_section(f, ".this");
2865 if (!sec || !sec->contents) { 2865 if (!sec || !sec->contents) {
2866 perror_msg_and_die("corrupt module %s?",m_name); 2866 bb_perror_msg_and_die("corrupt module %s?",m_name);
2867 } 2867 }
2868 module = (struct new_module *) sec->contents; 2868 module = (struct new_module *) sec->contents;
2869 m_addr = sec->header.sh_addr; 2869 m_addr = sec->header.sh_addr;
@@ -2927,7 +2927,7 @@ new_init_module(const char *m_name, struct obj_file *f,
2927 2927
2928 ret = new_sys_init_module(m_name, (struct new_module *) image); 2928 ret = new_sys_init_module(m_name, (struct new_module *) image);
2929 if (ret) 2929 if (ret)
2930 perror_msg("init_module: %s", m_name); 2930 bb_perror_msg("init_module: %s", m_name);
2931 2931
2932 free(image); 2932 free(image);
2933 2933
@@ -3008,7 +3008,7 @@ static int obj_check_undefineds(struct obj_file *f)
3008 sym->value = 0; 3008 sym->value = 0;
3009 } else { 3009 } else {
3010 if (!flag_quiet) { 3010 if (!flag_quiet) {
3011 error_msg("unresolved symbol %s", sym->name); 3011 bb_error_msg("unresolved symbol %s", sym->name);
3012 } 3012 }
3013 ret = 0; 3013 ret = 0;
3014 } 3014 }
@@ -3236,11 +3236,11 @@ static int obj_relocate(struct obj_file *f, ElfW(Addr) base)
3236 errmsg = "Unhandled relocation"; 3236 errmsg = "Unhandled relocation";
3237 bad_reloc: 3237 bad_reloc:
3238 if (extsym) { 3238 if (extsym) {
3239 error_msg("%s of type %ld for %s", errmsg, 3239 bb_error_msg("%s of type %ld for %s", errmsg,
3240 (long) ELFW(R_TYPE) (rel->r_info), 3240 (long) ELFW(R_TYPE) (rel->r_info),
3241 strtab + extsym->st_name); 3241 strtab + extsym->st_name);
3242 } else { 3242 } else {
3243 error_msg("%s of type %ld", errmsg, 3243 bb_error_msg("%s of type %ld", errmsg,
3244 (long) ELFW(R_TYPE) (rel->r_info)); 3244 (long) ELFW(R_TYPE) (rel->r_info));
3245 } 3245 }
3246 ret = 0; 3246 ret = 0;
@@ -3317,7 +3317,7 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
3317 3317
3318 fseek(fp, 0, SEEK_SET); 3318 fseek(fp, 0, SEEK_SET);
3319 if (fread(&f->header, sizeof(f->header), 1, fp) != 1) { 3319 if (fread(&f->header, sizeof(f->header), 1, fp) != 1) {
3320 perror_msg("error reading ELF header"); 3320 bb_perror_msg("error reading ELF header");
3321 return NULL; 3321 return NULL;
3322 } 3322 }
3323 3323
@@ -3325,25 +3325,25 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
3325 || f->header.e_ident[EI_MAG1] != ELFMAG1 3325 || f->header.e_ident[EI_MAG1] != ELFMAG1
3326 || f->header.e_ident[EI_MAG2] != ELFMAG2 3326 || f->header.e_ident[EI_MAG2] != ELFMAG2
3327 || f->header.e_ident[EI_MAG3] != ELFMAG3) { 3327 || f->header.e_ident[EI_MAG3] != ELFMAG3) {
3328 error_msg("not an ELF file"); 3328 bb_error_msg("not an ELF file");
3329 return NULL; 3329 return NULL;
3330 } 3330 }
3331 if (f->header.e_ident[EI_CLASS] != ELFCLASSM 3331 if (f->header.e_ident[EI_CLASS] != ELFCLASSM
3332 || f->header.e_ident[EI_DATA] != ELFDATAM 3332 || f->header.e_ident[EI_DATA] != ELFDATAM
3333 || f->header.e_ident[EI_VERSION] != EV_CURRENT 3333 || f->header.e_ident[EI_VERSION] != EV_CURRENT
3334 || !MATCH_MACHINE(f->header.e_machine)) { 3334 || !MATCH_MACHINE(f->header.e_machine)) {
3335 error_msg("ELF file not for this architecture"); 3335 bb_error_msg("ELF file not for this architecture");
3336 return NULL; 3336 return NULL;
3337 } 3337 }
3338 if (f->header.e_type != ET_REL) { 3338 if (f->header.e_type != ET_REL) {
3339 error_msg("ELF file not a relocatable object"); 3339 bb_error_msg("ELF file not a relocatable object");
3340 return NULL; 3340 return NULL;
3341 } 3341 }
3342 3342
3343 /* Read the section headers. */ 3343 /* Read the section headers. */
3344 3344
3345 if (f->header.e_shentsize != sizeof(ElfW(Shdr))) { 3345 if (f->header.e_shentsize != sizeof(ElfW(Shdr))) {
3346 error_msg("section header size mismatch: %lu != %lu", 3346 bb_error_msg("section header size mismatch: %lu != %lu",
3347 (unsigned long) f->header.e_shentsize, 3347 (unsigned long) f->header.e_shentsize,
3348 (unsigned long) sizeof(ElfW(Shdr))); 3348 (unsigned long) sizeof(ElfW(Shdr)));
3349 return NULL; 3349 return NULL;
@@ -3356,7 +3356,7 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
3356 section_headers = alloca(sizeof(ElfW(Shdr)) * shnum); 3356 section_headers = alloca(sizeof(ElfW(Shdr)) * shnum);
3357 fseek(fp, f->header.e_shoff, SEEK_SET); 3357 fseek(fp, f->header.e_shoff, SEEK_SET);
3358 if (fread(section_headers, sizeof(ElfW(Shdr)), shnum, fp) != shnum) { 3358 if (fread(section_headers, sizeof(ElfW(Shdr)), shnum, fp) != shnum) {
3359 perror_msg("error reading ELF section headers"); 3359 bb_perror_msg("error reading ELF section headers");
3360 return NULL; 3360 return NULL;
3361 } 3361 }
3362 3362
@@ -3392,7 +3392,7 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
3392 sec->contents = xmalloc(sec->header.sh_size); 3392 sec->contents = xmalloc(sec->header.sh_size);
3393 fseek(fp, sec->header.sh_offset, SEEK_SET); 3393 fseek(fp, sec->header.sh_offset, SEEK_SET);
3394 if (fread(sec->contents, sec->header.sh_size, 1, fp) != 1) { 3394 if (fread(sec->contents, sec->header.sh_size, 1, fp) != 1) {
3395 perror_msg("error reading ELF section data"); 3395 bb_perror_msg("error reading ELF section data");
3396 return NULL; 3396 return NULL;
3397 } 3397 }
3398 } else { 3398 } else {
@@ -3402,11 +3402,11 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
3402 3402
3403#if SHT_RELM == SHT_REL 3403#if SHT_RELM == SHT_REL
3404 case SHT_RELA: 3404 case SHT_RELA:
3405 error_msg("RELA relocations not supported on this architecture"); 3405 bb_error_msg("RELA relocations not supported on this architecture");
3406 return NULL; 3406 return NULL;
3407#else 3407#else
3408 case SHT_REL: 3408 case SHT_REL:
3409 error_msg("REL relocations not supported on this architecture"); 3409 bb_error_msg("REL relocations not supported on this architecture");
3410 return NULL; 3410 return NULL;
3411#endif 3411#endif
3412 3412
@@ -3419,7 +3419,7 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
3419 break; 3419 break;
3420 } 3420 }
3421 3421
3422 error_msg("can't handle sections of type %ld", 3422 bb_error_msg("can't handle sections of type %ld",
3423 (long) sec->header.sh_type); 3423 (long) sec->header.sh_type);
3424 return NULL; 3424 return NULL;
3425 } 3425 }
@@ -3454,7 +3454,7 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
3454 ElfW(Sym) * sym; 3454 ElfW(Sym) * sym;
3455 3455
3456 if (sec->header.sh_entsize != sizeof(ElfW(Sym))) { 3456 if (sec->header.sh_entsize != sizeof(ElfW(Sym))) {
3457 error_msg("symbol size mismatch: %lu != %lu", 3457 bb_error_msg("symbol size mismatch: %lu != %lu",
3458 (unsigned long) sec->header.sh_entsize, 3458 (unsigned long) sec->header.sh_entsize,
3459 (unsigned long) sizeof(ElfW(Sym))); 3459 (unsigned long) sizeof(ElfW(Sym)));
3460 return NULL; 3460 return NULL;
@@ -3484,7 +3484,7 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
3484 3484
3485 case SHT_RELM: 3485 case SHT_RELM:
3486 if (sec->header.sh_entsize != sizeof(ElfW(RelM))) { 3486 if (sec->header.sh_entsize != sizeof(ElfW(RelM))) {
3487 error_msg("relocation entry size mismatch: %lu != %lu", 3487 bb_error_msg("relocation entry size mismatch: %lu != %lu",
3488 (unsigned long) sec->header.sh_entsize, 3488 (unsigned long) sec->header.sh_entsize,
3489 (unsigned long) sizeof(ElfW(RelM))); 3489 (unsigned long) sizeof(ElfW(RelM)));
3490 return NULL; 3490 return NULL;
@@ -3523,7 +3523,7 @@ static int obj_load_progbits(FILE * fp, struct obj_file* f, char* imagebase)
3523 sec->contents = imagebase + (sec->header.sh_addr - base); 3523 sec->contents = imagebase + (sec->header.sh_addr - base);
3524 fseek(fp, sec->header.sh_offset, SEEK_SET); 3524 fseek(fp, sec->header.sh_offset, SEEK_SET);
3525 if (fread(sec->contents, sec->header.sh_size, 1, fp) != 1) { 3525 if (fread(sec->contents, sec->header.sh_size, 1, fp) != 1) {
3526 error_msg("error reading ELF section data: %s\n", strerror(errno)); 3526 bb_error_msg("error reading ELF section data: %s\n", strerror(errno));
3527 return 0; 3527 return 0;
3528 } 3528 }
3529 3529
@@ -3710,14 +3710,14 @@ add_ksymoops_symbols(struct obj_file *f, const char *filename,
3710 }; 3710 };
3711 3711
3712 if (realpath(filename, real)) { 3712 if (realpath(filename, real)) {
3713 absolute_filename = xstrdup(real); 3713 absolute_filename = bb_xstrdup(real);
3714 } 3714 }
3715 else { 3715 else {
3716 int save_errno = errno; 3716 int save_errno = errno;
3717 error_msg("cannot get realpath for %s", filename); 3717 bb_error_msg("cannot get realpath for %s", filename);
3718 errno = save_errno; 3718 errno = save_errno;
3719 perror(""); 3719 perror("");
3720 absolute_filename = xstrdup(filename); 3720 absolute_filename = bb_xstrdup(filename);
3721 } 3721 }
3722 3722
3723 lm_name = strlen(m_name); 3723 lm_name = strlen(m_name);
@@ -3953,7 +3953,7 @@ extern int insmod_main( int argc, char **argv)
3953 break; 3953 break;
3954 case 'o': /* name the output module */ 3954 case 'o': /* name the output module */
3955 free(m_name); 3955 free(m_name);
3956 m_name = xstrdup(optarg); 3956 m_name = bb_xstrdup(optarg);
3957 break; 3957 break;
3958 case 'L': /* Stub warning */ 3958 case 'L': /* Stub warning */
3959 /* This is needed for compatibility with modprobe. 3959 /* This is needed for compatibility with modprobe.
@@ -3967,16 +3967,16 @@ extern int insmod_main( int argc, char **argv)
3967 break; 3967 break;
3968#endif 3968#endif
3969 default: 3969 default:
3970 show_usage(); 3970 bb_show_usage();
3971 } 3971 }
3972 } 3972 }
3973 3973
3974 if (argv[optind] == NULL) { 3974 if (argv[optind] == NULL) {
3975 show_usage(); 3975 bb_show_usage();
3976 } 3976 }
3977 3977
3978 /* Grab the module name */ 3978 /* Grab the module name */
3979 tmp1 = xstrdup(argv[optind]); 3979 tmp1 = bb_xstrdup(argv[optind]);
3980 tmp = basename(tmp1); 3980 tmp = basename(tmp1);
3981 len = strlen(tmp); 3981 len = strlen(tmp);
3982 3982
@@ -3985,7 +3985,7 @@ extern int insmod_main( int argc, char **argv)
3985 tmp[len] = '\0'; 3985 tmp[len] = '\0';
3986 } 3986 }
3987 3987
3988 bb_asprintf(&m_fullName, "%s.o", tmp); 3988 bb_xasprintf(&m_fullName, "%s.o", tmp);
3989 3989
3990 if (!m_name) { 3990 if (!m_name) {
3991 m_name = tmp; 3991 m_name = tmp;
@@ -4038,19 +4038,19 @@ extern int insmod_main( int argc, char **argv)
4038 if (m_filename == 0 4038 if (m_filename == 0
4039 || ((fp = fopen(m_filename, "r")) == NULL)) 4039 || ((fp = fopen(m_filename, "r")) == NULL))
4040 { 4040 {
4041 error_msg("%s: no module by that name found", m_fullName); 4041 bb_error_msg("%s: no module by that name found", m_fullName);
4042 goto out; 4042 goto out;
4043 } 4043 }
4044 } else 4044 } else
4045 error_msg_and_die("%s: no module by that name found", m_fullName); 4045 bb_error_msg_and_die("%s: no module by that name found", m_fullName);
4046 } 4046 }
4047 } else 4047 } else
4048 m_filename = xstrdup(argv[optind]); 4048 m_filename = bb_xstrdup(argv[optind]);
4049 4049
4050 printf("Using %s\n", m_filename); 4050 printf("Using %s\n", m_filename);
4051 4051
4052 if ((f = obj_load(fp, LOADBITS)) == NULL) 4052 if ((f = obj_load(fp, LOADBITS)) == NULL)
4053 perror_msg_and_die("Could not load the module"); 4053 bb_perror_msg_and_die("Could not load the module");
4054 4054
4055 if (get_modinfo_value(f, "kernel_version") == NULL) 4055 if (get_modinfo_value(f, "kernel_version") == NULL)
4056 m_has_modinfo = 0; 4056 m_has_modinfo = 0;
@@ -4067,7 +4067,7 @@ extern int insmod_main( int argc, char **argv)
4067 } else { 4067 } else {
4068 m_version = old_get_module_version(f, m_strversion); 4068 m_version = old_get_module_version(f, m_strversion);
4069 if (m_version == -1) { 4069 if (m_version == -1) {
4070 error_msg("couldn't find the kernel version the module was " 4070 bb_error_msg("couldn't find the kernel version the module was "
4071 "compiled for"); 4071 "compiled for");
4072 goto out; 4072 goto out;
4073 } 4073 }
@@ -4075,12 +4075,12 @@ extern int insmod_main( int argc, char **argv)
4075 4075
4076 if (strncmp(uts_info.release, m_strversion, STRVERSIONLEN) != 0) { 4076 if (strncmp(uts_info.release, m_strversion, STRVERSIONLEN) != 0) {
4077 if (flag_force_load) { 4077 if (flag_force_load) {
4078 error_msg("Warning: kernel-module version mismatch\n" 4078 bb_error_msg("Warning: kernel-module version mismatch\n"
4079 "\t%s was compiled for kernel version %s\n" 4079 "\t%s was compiled for kernel version %s\n"
4080 "\twhile this kernel is version %s", 4080 "\twhile this kernel is version %s",
4081 m_filename, m_strversion, uts_info.release); 4081 m_filename, m_strversion, uts_info.release);
4082 } else { 4082 } else {
4083 error_msg("kernel-module version mismatch\n" 4083 bb_error_msg("kernel-module version mismatch\n"
4084 "\t%s was compiled for kernel version %s\n" 4084 "\t%s was compiled for kernel version %s\n"
4085 "\twhile this kernel is version %s.", 4085 "\twhile this kernel is version %s.",
4086 m_filename, m_strversion, uts_info.release); 4086 m_filename, m_strversion, uts_info.release);
@@ -4099,7 +4099,7 @@ extern int insmod_main( int argc, char **argv)
4099 goto out; 4099 goto out;
4100 k_crcs = new_is_kernel_checksummed(); 4100 k_crcs = new_is_kernel_checksummed();
4101#else 4101#else
4102 error_msg("Not configured to support new kernels"); 4102 bb_error_msg("Not configured to support new kernels");
4103 goto out; 4103 goto out;
4104#endif 4104#endif
4105 } else { 4105 } else {
@@ -4108,7 +4108,7 @@ extern int insmod_main( int argc, char **argv)
4108 goto out; 4108 goto out;
4109 k_crcs = old_is_kernel_checksummed(); 4109 k_crcs = old_is_kernel_checksummed();
4110#else 4110#else
4111 error_msg("Not configured to support old kernels"); 4111 bb_error_msg("Not configured to support old kernels");
4112 goto out; 4112 goto out;
4113#endif 4113#endif
4114 } 4114 }
@@ -4170,14 +4170,14 @@ extern int insmod_main( int argc, char **argv)
4170 m_addr = create_module(m_name, m_size); 4170 m_addr = create_module(m_name, m_size);
4171 if (m_addr == -1) switch (errno) { 4171 if (m_addr == -1) switch (errno) {
4172 case EEXIST: 4172 case EEXIST:
4173 error_msg("A module named %s already exists", m_name); 4173 bb_error_msg("A module named %s already exists", m_name);
4174 goto out; 4174 goto out;
4175 case ENOMEM: 4175 case ENOMEM:
4176 error_msg("Can't allocate kernel memory for module; needed %lu bytes", 4176 bb_error_msg("Can't allocate kernel memory for module; needed %lu bytes",
4177 m_size); 4177 m_size);
4178 goto out; 4178 goto out;
4179 default: 4179 default:
4180 perror_msg("create_module: %s", m_name); 4180 bb_perror_msg("create_module: %s", m_name);
4181 goto out; 4181 goto out;
4182 } 4182 }
4183 4183