diff options
Diffstat (limited to 'modutils/modprobe.c')
-rw-r--r-- | modutils/modprobe.c | 23 |
1 files changed, 2 insertions, 21 deletions
diff --git a/modutils/modprobe.c b/modutils/modprobe.c index 93e510293..698eed84a 100644 --- a/modutils/modprobe.c +++ b/modutils/modprobe.c | |||
@@ -666,27 +666,8 @@ static int mod_process ( struct mod_list_t *list, int do_insert ) | |||
666 | printf("%s module %s\n", do_insert?"Loading":"Unloading", list-> m_name ); | 666 | printf("%s module %s\n", do_insert?"Loading":"Unloading", list-> m_name ); |
667 | } | 667 | } |
668 | if (!show_only) { | 668 | if (!show_only) { |
669 | int rc2 = 0; | 669 | int rc2 = wait4pid(bb_spawn(argv)); |
670 | int status; | 670 | |
671 | switch (fork()) { | ||
672 | case -1: | ||
673 | rc2 = 1; | ||
674 | break; | ||
675 | case 0: //child | ||
676 | execvp(argv[0], argv); | ||
677 | bb_perror_msg_and_die("exec of %s", argv[0]); | ||
678 | /* NOTREACHED */ | ||
679 | default: | ||
680 | if (wait(&status) == -1) { | ||
681 | rc2 = 1; | ||
682 | break; | ||
683 | } | ||
684 | if (WIFEXITED(status)) | ||
685 | rc2 = WEXITSTATUS(status); | ||
686 | if (WIFSIGNALED(status)) | ||
687 | rc2 = WTERMSIG(status); | ||
688 | break; | ||
689 | } | ||
690 | if (do_insert) { | 671 | if (do_insert) { |
691 | rc = rc2; /* only last module matters */ | 672 | rc = rc2; /* only last module matters */ |
692 | } | 673 | } |