aboutsummaryrefslogtreecommitdiff
path: root/libbb/vfork_daemon_rexec.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2023-04-06 21:20:28 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2023-04-06 21:20:28 +0200
commita26711a2d1464167be4ebc990fe21a3809a2da34 (patch)
treec48559fea73287479418e5f10d38157f5377cae4 /libbb/vfork_daemon_rexec.c
parent05f2bedaebd694605abd1f199fc25d93ad73840b (diff)
downloadbusybox-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.c10
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