Fixed JIT conflicts with SELinux (bug 5581, r=dvander).
authorAsher Baker <asherkin@gmail.com>
Thu Apr 11 00:33:12 2013 +0100 (2013-04-11)
changeset 38891724fb233ad6
parent 3888 8828f7aa16db
child 3890 720531f08850
Fixed JIT conflicts with SELinux (bug 5581, r=dvander).
knight/shared/KeCodeAllocator.cpp
     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;