diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2023-04-06 21:20:28 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2023-04-06 21:20:28 +0200 |
commit | a26711a2d1464167be4ebc990fe21a3809a2da34 (patch) | |
tree | c48559fea73287479418e5f10d38157f5377cae4 /libbb/vfork_daemon_rexec.c | |
parent | 05f2bedaebd694605abd1f199fc25d93ad73840b (diff) | |
download | busybox-w32-a26711a2d1464167be4ebc990fe21a3809a2da34.tar.gz busybox-w32-a26711a2d1464167be4ebc990fe21a3809a2da34.tar.bz2 busybox-w32-a26711a2d1464167be4ebc990fe21a3809a2da34.zip |
libbb: consolidate NOMMU fix of restoring high bit in argv[0][0]
function old new delta
fork_or_rexec 46 56 +10
bootchartd_main 1087 1079 -8
cpio_main 674 661 -13
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/2 up/down: 10/-21) Total: -11 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb/vfork_daemon_rexec.c')
-rw-r--r-- | libbb/vfork_daemon_rexec.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c index 79141936a..a570ddbf2 100644 --- a/libbb/vfork_daemon_rexec.c +++ b/libbb/vfork_daemon_rexec.c | |||
@@ -268,10 +268,12 @@ pid_t FAST_FUNC fork_or_rexec(char **argv) | |||
268 | /* fflush_all(); ? - so far all callers had no buffered output to flush */ | 268 | /* fflush_all(); ? - so far all callers had no buffered output to flush */ |
269 | 269 | ||
270 | pid = xvfork(); | 270 | pid = xvfork(); |
271 | if (pid) /* parent */ | 271 | if (pid == 0) /* child - re-exec ourself */ |
272 | return pid; | 272 | re_exec(argv); /* NORETURN */ |
273 | /* child - re-exec ourself */ | 273 | |
274 | re_exec(argv); | 274 | /* parent */ |
275 | argv[0][0] &= 0x7f; /* undo re_rexec() damage */ | ||
276 | return pid; | ||
275 | } | 277 | } |
276 | #endif | 278 | #endif |
277 | 279 | ||