From f2f499aace36e01fbb542f175452b405f4298504 Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Sat, 14 Jan 2017 13:20:34 +0900 Subject: [PATCH] mcreboot/stop: toggle address-space layout randomization (ASLR) to avoid mcexec user-space reservation failure --- arch/x86/tools/mcreboot-smp-x86.sh.in | 15 +++++++++++++-- arch/x86/tools/mcstop+release-smp-x86.sh.in | 5 +++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/arch/x86/tools/mcreboot-smp-x86.sh.in b/arch/x86/tools/mcreboot-smp-x86.sh.in index 316ca693..51c12102 100644 --- a/arch/x86/tools/mcreboot-smp-x86.sh.in +++ b/arch/x86/tools/mcreboot-smp-x86.sh.in @@ -174,6 +174,11 @@ error_exit() { fi fi ;& + aslr_disabled) + if [ -f /tmp/mckernel_randomize_va_space ]; then + cat /tmp/mckernel_randomize_va_space > /proc/sys/kernel/randomize_va_space + fi + ;& initial) # Nothing more to revert ;; @@ -225,6 +230,12 @@ if [ "$cpus" == "" ]; then fi fi +# Disable address space layout randomization +if [ -f /proc/sys/kernel/randomize_va_space ] && [ "`cat /proc/sys/kernel/randomize_va_space`" != "0" ]; then + cat /proc/sys/kernel/randomize_va_space > /tmp/mckernel_randomize_va_space + echo "0" > /proc/sys/kernel/randomize_va_space +fi + # Remove mcoverlay if loaded if [ "$enable_mcoverlay" == "yes" ]; then if grep mcoverlay /proc/modules &>/dev/null; then @@ -235,7 +246,7 @@ if [ "$enable_mcoverlay" == "yes" ]; then if [ -e /tmp/mcos ]; then rm -rf /tmp/mcos; fi if ! rmmod mcoverlay 2>/dev/null; then echo "error: removing mcoverlay" >&2 - error_exit "initial" + error_exit "aslr_disabled" fi fi fi @@ -245,7 +256,7 @@ if [ "${irqbalance_used}" == "yes" ]; then systemctl stop irqbalance_mck.service 2>/dev/null if ! systemctl stop irqbalance.service 2>/dev/null ; then echo "error: stopping irqbalance" >&2 - error_exit "initial" + error_exit "aslr_disabled" fi; fi diff --git a/arch/x86/tools/mcstop+release-smp-x86.sh.in b/arch/x86/tools/mcstop+release-smp-x86.sh.in index c23a7a56..af360a82 100644 --- a/arch/x86/tools/mcstop+release-smp-x86.sh.in +++ b/arch/x86/tools/mcstop+release-smp-x86.sh.in @@ -113,5 +113,10 @@ if [ "`systemctl status irqbalance_mck.service 2> /dev/null |grep -E 'Active: ac fi fi +# Re-enable ASLR +if [ -f /tmp/mckernel_randomize_va_space ]; then + cat /tmp/mckernel_randomize_va_space > /proc/sys/kernel/randomize_va_space +fi + # Set back default swappiness echo 60 > /proc/sys/vm/swappiness