Mercurial > hg > graal-jvmci-8
diff src/os_cpu/linux_x86/vm/os_linux_x86.hpp @ 12313:899ecf76b570
8023956: Provide a work-around to broken Linux 32 bit "Exec Shield" using CS for NX emulation (crashing with SI_KERNEL)
Summary: Execute some code at a high virtual address value, and keep mapped
Reviewed-by: coleenp, zgu
author | dsimms |
---|---|
date | Wed, 25 Sep 2013 13:58:13 +0200 |
parents | b9a9ed0f8eeb |
children | de6a9e811145 |
line wrap: on
line diff
--- a/src/os_cpu/linux_x86/vm/os_linux_x86.hpp Mon Sep 23 08:56:19 2013 -0700 +++ b/src/os_cpu/linux_x86/vm/os_linux_x86.hpp Wed Sep 25 13:58:13 2013 +0200 @@ -36,4 +36,17 @@ // Note: Currently only used in 64 bit Windows implementations static bool register_code_area(char *low, char *high) { return true; } + /* + * Work-around for broken NX emulation using CS limit, Red Hat patch "Exec-Shield" + * (IA32 only). + * + * Map and execute at a high VA to prevent CS lazy updates race with SMP MM + * invalidation.Further code generation by the JVM will no longer cause CS limit + * updates. + * + * Affects IA32: RHEL 5 & 6, Ubuntu 10.04 (LTS), 10.10, 11.04, 11.10, 12.04. + * @see JDK-8023956 + */ + static void workaround_expand_exec_shield_cs_limit(); + #endif // OS_CPU_LINUX_X86_VM_OS_LINUX_X86_HPP