Fixed JIT conflicts with SELinux (bug 5581, r=dvander).
Fixed JIT conflicts with SELinux (
bug 5581, r=dvander).
1.1 --- a/knight/shared/KeCodeAllocator.cpp Mon Apr 08 08:00:50 2013 -0400
1.2 +++ b/knight/shared/KeCodeAllocator.cpp Thu Apr 11 00:33:12 2013 +0100
1.3 @@ -267,13 +267,8 @@
1.4 #if defined KE_PLATFORM_WINDOWS
1.5 region->block_start = (unsigned char *)VirtualAlloc(NULL, size, MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE);
1.6 #elif defined KE_PLATFORM_POSIX
1.7 - region->block_start = (unsigned char *)valloc(size);
1.8 - if (mprotect(region->block_start, size, PROT_READ|PROT_WRITE|PROT_EXEC) == -1)
1.9 - {
1.10 - free(region->block_start);
1.11 - delete region;
1.12 - return NULL;
1.13 - }
1.14 + region->block_start = (unsigned char *)mmap(NULL, size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0);
1.15 + region->block_start = (region->block_start == MAP_FAILED) ? NULL : region->block_start;
1.16 #else
1.17 #error "TODO"
1.18 #endif
1.19 @@ -389,7 +384,7 @@
1.20 #if defined KE_PLATFORM_WINDOWS
1.21 VirtualFree(region->block_start, 0, MEM_RELEASE);
1.22 #else
1.23 - free(region->block_start);
1.24 + munmap(region->block_start, region->total_size);
1.25 #endif
1.26
1.27 delete region;