diff options
Diffstat (limited to 'modutils')
| -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 | } |
