Set PROT_EXEC on the whole pixelflinger code cache.
The pointer difference between word pointers is a number of words, and it needs to be multiplied by the size of a word to get a proper byte size. Without this, we tend to see crashes when the code crosses a page boundary. Bug: 3026204 Bug: 3097482 Change-Id: I37776d26d5afcdb1da71680de02fbb95e6548371
This commit is contained in:
parent
9cd8057b6e
commit
8e0e372a38
1 changed files with 1 additions and 1 deletions
|
|
@ -94,7 +94,7 @@ void Assembly::ensureMbaseExecutable()
|
|||
long pagemask = ~(pagesize - 1); // assumes pagesize is a power of 2
|
||||
|
||||
uint32_t* pageStart = (uint32_t*) (((uintptr_t) mBase) & pagemask);
|
||||
size_t adjustedLength = mBase - pageStart + mSize;
|
||||
size_t adjustedLength = (mBase - pageStart) * sizeof(uint32_t) + mSize;
|
||||
|
||||
if (mBase && mprotect(pageStart, adjustedLength, PROT_READ | PROT_WRITE | PROT_EXEC) != 0) {
|
||||
mspace_free(getMspace(), mBase);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue