kernel/vm: Fix area_for with PROT_NONE address

Do not assume "no user protection" means "kernel area".

This allows calls to `area_for` for addresses with protection 0
to work properly.

Change-Id: I54cbcc154d10b63359a2e1233f0c0f45d0d8e21e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6388
Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
Trung Nguyen
2023-05-11 15:08:35 +00:00
committed by waddlesplash
parent 786c14d06d
commit 412bcb11fd
+2 -1
View File
@@ -3810,7 +3810,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)
if (!kernel && (area->protection & (B_READ_AREA | B_WRITE_AREA)) == 0
&& (area->protection & B_KERNEL_AREA) != 0)
return B_ERROR;
return area->id;