From 3d513faa6f41cb6a02a69a0729beef6ccc594d0e Mon Sep 17 00:00:00 2001 From: Alex Brainman Date: Tue, 25 Jun 2013 17:20:14 +1000 Subject: [PATCH] runtime: do not mark os memory as executable on windows Resubmit 3c2cddfbdaec now that windows callbacks are not generated during runtime. Fixes #5494 R=golang-dev, minux.ma, rsc CC=golang-dev https://golang.org/cl/10487043 --- src/pkg/runtime/mem_windows.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pkg/runtime/mem_windows.c b/src/pkg/runtime/mem_windows.c index 7840daa22c3..1a778b77527 100644 --- a/src/pkg/runtime/mem_windows.c +++ b/src/pkg/runtime/mem_windows.c @@ -13,7 +13,7 @@ enum { MEM_RESERVE = 0x2000, MEM_RELEASE = 0x8000, - PAGE_EXECUTE_READWRITE = 0x40, + PAGE_READWRITE = 0x0004, }; #pragma dynimport runtime·VirtualAlloc VirtualAlloc "kernel32.dll" @@ -25,7 +25,7 @@ void* runtime·SysAlloc(uintptr n) { mstats.sys += n; - return runtime·stdcall(runtime·VirtualAlloc, 4, nil, n, (uintptr)(MEM_COMMIT|MEM_RESERVE), (uintptr)PAGE_EXECUTE_READWRITE); + return runtime·stdcall(runtime·VirtualAlloc, 4, nil, n, (uintptr)(MEM_COMMIT|MEM_RESERVE), (uintptr)PAGE_READWRITE); } void @@ -51,12 +51,12 @@ runtime·SysReserve(void *v, uintptr n) { // v is just a hint. // First try at v. - v = runtime·stdcall(runtime·VirtualAlloc, 4, v, n, (uintptr)MEM_RESERVE, (uintptr)PAGE_EXECUTE_READWRITE); + v = runtime·stdcall(runtime·VirtualAlloc, 4, v, n, (uintptr)MEM_RESERVE, (uintptr)PAGE_READWRITE); if(v != nil) return v; // Next let the kernel choose the address. - return runtime·stdcall(runtime·VirtualAlloc, 4, nil, n, (uintptr)MEM_RESERVE, (uintptr)PAGE_EXECUTE_READWRITE); + return runtime·stdcall(runtime·VirtualAlloc, 4, nil, n, (uintptr)MEM_RESERVE, (uintptr)PAGE_READWRITE); } void @@ -65,7 +65,7 @@ runtime·SysMap(void *v, uintptr n) void *p; mstats.sys += n; - p = runtime·stdcall(runtime·VirtualAlloc, 4, v, n, (uintptr)MEM_COMMIT, (uintptr)PAGE_EXECUTE_READWRITE); + p = runtime·stdcall(runtime·VirtualAlloc, 4, v, n, (uintptr)MEM_COMMIT, (uintptr)PAGE_READWRITE); if(p != v) runtime·throw("runtime: cannot map pages in arena address space"); }