Set permissions after loading image.

Bug b/38514001

Change-Id: I6d2d891545840beee54db95a7456b6ede293d0eb
Reviewed-on: https://swiftshader-review.googlesource.com/9908
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
diff --git a/src/Reactor/SubzeroReactor.cpp b/src/Reactor/SubzeroReactor.cpp
index 020f82b..f52ce98 100644
--- a/src/Reactor/SubzeroReactor.cpp
+++ b/src/Reactor/SubzeroReactor.cpp
@@ -492,20 +492,16 @@
 		{
 			if(!entry)
 			{
-				#if defined(_WIN32)
-					VirtualProtect(&buffer[0], buffer.size(), PAGE_EXECUTE_READWRITE, &oldProtection);
-				#else
-					mprotect(&buffer[0], buffer.size(), PROT_READ | PROT_WRITE | PROT_EXEC);
-				#endif
-
 				position = std::numeric_limits<std::size_t>::max();   // Can't stream more data after this
 
 				size_t codeSize = 0;
 				entry = loadImage(&buffer[0], codeSize);
 
 				#if defined(_WIN32)
+					VirtualProtect(&buffer[0], buffer.size(), PAGE_EXECUTE_READ, &oldProtection);
 					FlushInstructionCache(GetCurrentProcess(), NULL, 0);
 				#else
+					mprotect(&buffer[0], buffer.size(), PROT_READ | PROT_EXEC);
 					__builtin___clear_cache((char*)entry, (char*)entry + codeSize);
 				#endif
 			}