diff --git a/sys/kern/kern_dmem.pas b/sys/kern/kern_dmem.pas index c2816430..1ca6d692 100644 --- a/sys/kern/kern_dmem.pas +++ b/sys/kern/kern_dmem.pas @@ -443,7 +443,7 @@ begin rbp:=Pointer(td^.td_frame.tf_rbp); stack_addr:=nil; - while (QWORD(rbp) < QWORD($800000000000)) do + while (QWORD(rbp) < QWORD($800000000000)) do //sv_maxuser begin rip:=md_fuword(rbp[1]); rbp:=md_fuword(rbp[0]); @@ -470,7 +470,7 @@ begin begin if (addr=0) then begin - if ( (QWORD(stack_addr) - QWORD($7f0000000)) < QWORD($800000000)) then + if ( (QWORD(stack_addr) - QWORD($7f0000000)) < QWORD($800000000)) then //ET_DYN_LOAD_ADDR_SYS begin addr:=SCE_SYS_HEAP_START; end else @@ -570,12 +570,7 @@ end; function is_valid_entry(entry:vm_map_entry_t):Boolean; inline; begin - case entry^.inheritance of - VM_INHERIT_PATCH:Result:=False; - VM_INHERIT_HOLE :Result:=False; - else - Result:=True; - end; + Result:=not (entry^.inheritance in [VM_INHERIT_PATCH,VM_INHERIT_HOLE]); end; function next_valid_entry(map:vm_map_t;entry:vm_map_entry_t):vm_map_entry_t; @@ -795,8 +790,7 @@ begin if (p_proc.p_libkernel_start_addr > rip) or (p_proc.p_libkernel___end_addr <= rip) then begin - //if ((Int64(rip) - Int64($7f0000000)) < Int64($800000000)) then //ET_DYN_LOAD_ADDR_SYS - if (QWORD(rip)>=ET_DYN_LOAD_ADDR_SYS) and (QWORD(rip)0) then + if (vm_budget_reserve(budget_id,field_malloc,__end-start)<>0) then begin Exit(KERN_RESOURCE_SHORTAGE); end; diff --git a/sys/vm/vm_mmap.pas b/sys/vm/vm_mmap.pas index a09e9d43..bbcf91b8 100644 --- a/sys/vm/vm_mmap.pas +++ b/sys/vm/vm_mmap.pas @@ -664,7 +664,7 @@ begin rbp:=Pointer(td^.td_frame.tf_rbp); stack_addr:=nil; - while (QWORD(rbp) < QWORD($800000000000)) do + while (QWORD(rbp) < QWORD($800000000000)) do //sv_maxuser begin rip:=md_fuword(rbp[1]); rbp:=md_fuword(rbp[0]); @@ -924,7 +924,7 @@ _map: td^.td_fpop:=fp; maxprot:=maxprot and cap_maxprot; - if (((flags and MAP_SANITIZER) <> 0) and (addr < QWORD($800000000000))) then + if (((flags and MAP_SANITIZER) <> 0) and (addr < QWORD($800000000000))) then //sv_maxuser begin if (QWORD($fc00000000) < (addr + size)) then begin