mirror of
https://review.haiku-os.org/haiku
synced 2025-01-18 04:28:52 +01:00
kernel/vm: Adjust kernel permissions check in vm_area_for.
Areas in the kernel address space generally won't have B_KERNEL_AREA. Instead we should check if the area in question has user permissions at all. If it doesn't, then return an error. If the address space isn't the kernel one, then we don't bother with this check, as all areas in the user address space should be returned even if they don't have permissions or are a "kernel" area.
This commit is contained in:
parent
43b96dabf2
commit
c125a32508
@ -3463,8 +3463,8 @@ vm_area_for(addr_t address, bool kernel)
|
||||
|
||||
VMArea* area = locker.AddressSpace()->LookupArea(address);
|
||||
if (area != NULL) {
|
||||
if (!kernel && (area->protection & (B_READ_AREA | B_WRITE_AREA)) == 0
|
||||
&& (area->protection & B_KERNEL_AREA) != 0)
|
||||
if (!kernel && team == VMAddressSpace::KernelID()
|
||||
&& (area->protection & (B_READ_AREA | B_WRITE_AREA | B_CLONEABLE_AREA)) == 0)
|
||||
return B_ERROR;
|
||||
|
||||
return area->id;
|
||||
|
Loading…
Reference in New Issue
Block a user