ANDROID: 16K: brk: __PAGE_ALIGN brk
In page-compat mode, brk() syscalls must be at __PAGE_ALIGN-ed addresses and of __PAGE_SIZE-multiple length. Bug: 383389337 Bug: 315325080 Bug: 302403436 Change-Id: Ifdb1579580fb9ad90778c58102514e7aaed1c846 Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
This commit is contained in:
committed by
Carlos Llamas
parent
7852452429
commit
4daa4c1fec
@@ -157,8 +157,8 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
|
|||||||
mm->end_data, mm->start_data))
|
mm->end_data, mm->start_data))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
newbrk = PAGE_ALIGN(brk);
|
newbrk = __PAGE_ALIGN(brk);
|
||||||
oldbrk = PAGE_ALIGN(mm->brk);
|
oldbrk = __PAGE_ALIGN(mm->brk);
|
||||||
if (oldbrk == newbrk) {
|
if (oldbrk == newbrk) {
|
||||||
mm->brk = brk;
|
mm->brk = brk;
|
||||||
goto success;
|
goto success;
|
||||||
@@ -192,8 +192,8 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
|
|||||||
* expansion area
|
* expansion area
|
||||||
*/
|
*/
|
||||||
vma_iter_init(&vmi, mm, oldbrk);
|
vma_iter_init(&vmi, mm, oldbrk);
|
||||||
next = vma_find(&vmi, newbrk + PAGE_SIZE + stack_guard_gap);
|
next = vma_find(&vmi, newbrk + __PAGE_SIZE + stack_guard_gap);
|
||||||
if (next && newbrk + PAGE_SIZE > vm_start_gap(next))
|
if (next && newbrk + __PAGE_SIZE > vm_start_gap(next))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
brkvma = vma_prev_limit(&vmi, mm->start_brk);
|
brkvma = vma_prev_limit(&vmi, mm->start_brk);
|
||||||
|
|||||||
Reference in New Issue
Block a user