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 <waddlesplash@gmail.com>
This commit is contained in:
Trung Nguyen 2023-05-11 20:40:12 +10:00 committed by waddlesplash
parent 786c14d06d
commit 412bcb11fd

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;