summaryrefslogtreecommitdiffstats
path: root/sys-utils/setarch.c
diff options
context:
space:
mode:
authorRuediger Meier2014-05-22 09:19:08 +0200
committerRuediger Meier2014-05-22 09:41:24 +0200
commit34c265f01c8b189e7de4e73fb7ecb0e63a004c51 (patch)
treeff0987e52d013187f14e91568883eda290b28f6b /sys-utils/setarch.c
parentbuild-sys: cleanup bash-completion/ (diff)
downloadkernel-qcow2-util-linux-34c265f01c8b189e7de4e73fb7ecb0e63a004c51.tar.gz
kernel-qcow2-util-linux-34c265f01c8b189e7de4e73fb7ecb0e63a004c51.tar.xz
kernel-qcow2-util-linux-34c265f01c8b189e7de4e73fb7ecb0e63a004c51.zip
setarch: flush output streams before exec
This fixes the following (non-deterministic) discrepancy: $ setarch x86_64 -RFZLvXBIST3 --uname-2.6 echo success Switching on READ_IMPLIES_EXEC. Switching on ADDR_LIMIT_32BIT. Switching on SHORT_INODE. Switching on WHOLE_SECONDS. Switching on STICKY_TIMEOUTS. Switching on ADDR_LIMIT_3GB. Switching on UNAME26. success $ setarch x86_64 -RFZLvXBIST3 --uname-2.6 echo success &> /tmp/bla; cat /tmp/bla success Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
Diffstat (limited to 'sys-utils/setarch.c')
-rw-r--r--sys-utils/setarch.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys-utils/setarch.c b/sys-utils/setarch.c
index 957bb2b03..f957c7975 100644
--- a/sys-utils/setarch.c
+++ b/sys-utils/setarch.c
@@ -356,6 +356,9 @@ int main(int argc, char *argv[])
if (set_arch(p, options, 0))
err(EXIT_FAILURE, _("Failed to set personality to %s"), p);
+ /* flush all output streams before exec */
+ fflush(NULL);
+
if (!argc) {
execl("/bin/sh", "-sh", NULL);
err(EXIT_FAILURE, _("failed to execute %s"), "/bin/sh");