diff options
Diffstat (limited to 'arch/um/os-Linux/drivers/ethertap_user.c')
-rw-r--r-- | arch/um/os-Linux/drivers/ethertap_user.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/arch/um/os-Linux/drivers/ethertap_user.c b/arch/um/os-Linux/drivers/ethertap_user.c index 4ff553603449..07ca0cb472ac 100644 --- a/arch/um/os-Linux/drivers/ethertap_user.c +++ b/arch/um/os-Linux/drivers/ethertap_user.c | |||
@@ -94,7 +94,7 @@ static int etap_tramp(char *dev, char *gate, int control_me, | |||
94 | int control_remote, int data_me, int data_remote) | 94 | int control_remote, int data_me, int data_remote) |
95 | { | 95 | { |
96 | struct etap_pre_exec_data pe_data; | 96 | struct etap_pre_exec_data pe_data; |
97 | int pid, status, err, n; | 97 | int pid, err, n; |
98 | char version_buf[sizeof("nnnnn\0")]; | 98 | char version_buf[sizeof("nnnnn\0")]; |
99 | char data_fd_buf[sizeof("nnnnnn\0")]; | 99 | char data_fd_buf[sizeof("nnnnnn\0")]; |
100 | char gate_buf[sizeof("nnn.nnn.nnn.nnn\0")]; | 100 | char gate_buf[sizeof("nnn.nnn.nnn.nnn\0")]; |
@@ -131,13 +131,7 @@ static int etap_tramp(char *dev, char *gate, int control_me, | |||
131 | } | 131 | } |
132 | if (c != 1) { | 132 | if (c != 1) { |
133 | printk(UM_KERN_ERR "etap_tramp : uml_net failed\n"); | 133 | printk(UM_KERN_ERR "etap_tramp : uml_net failed\n"); |
134 | err = -EINVAL; | 134 | err = helper_wait(pid, 0, "uml_net"); |
135 | CATCH_EINTR(n = waitpid(pid, &status, 0)); | ||
136 | if (n < 0) | ||
137 | err = -errno; | ||
138 | else if (!WIFEXITED(status) || (WEXITSTATUS(status) != 1)) | ||
139 | printk(UM_KERN_ERR "uml_net didn't exit with " | ||
140 | "status 1\n"); | ||
141 | } | 135 | } |
142 | return err; | 136 | return err; |
143 | } | 137 | } |