kernel: resolving a handle now increments the refcount of the corresponding object

This commit is contained in:
2026-03-12 20:42:05 +00:00
parent 5a37b5e148
commit 6ba236b2fe
5 changed files with 7 additions and 39 deletions

View File

@@ -61,7 +61,6 @@ kern_status_t sys_vm_region_create(
return status;
}
object_ref(obj);
task_unlock_irqrestore(self, flags);
vm_region_lock_irqsave(parent_region, &flags);
@@ -116,7 +115,6 @@ kern_status_t sys_vm_region_kill(kern_handle_t region_handle)
return KERN_INVALID_ARGUMENT;
}
object_ref(obj);
task_unlock_irqrestore(self, flags);
vm_region_lock_irqsave(region, &flags);
@@ -162,7 +160,6 @@ kern_status_t sys_vm_region_read(
return KERN_INVALID_ARGUMENT;
}
object_ref(obj);
task_unlock_irqrestore(self, flags);
virt_addr_t src_address = vm_region_get_base_address(region) + offset;
@@ -214,7 +211,6 @@ kern_status_t sys_vm_region_write(
return KERN_INVALID_ARGUMENT;
}
object_ref(obj);
task_unlock_irqrestore(self, flags);
virt_addr_t dst_address = vm_region_get_base_address(region) + offset;
@@ -283,8 +279,6 @@ kern_status_t sys_vm_region_map_absolute(
return KERN_INVALID_ARGUMENT;
}
object_ref(vmo_obj);
object_ref(region_obj);
task_unlock_irqrestore(self, flags);
off_t region_offset = VM_REGION_ANY_OFFSET;
@@ -369,8 +363,6 @@ kern_status_t sys_vm_region_map_relative(
return KERN_INVALID_ARGUMENT;
}
object_ref(vmo_obj);
object_ref(region_obj);
task_unlock_irqrestore(self, flags);
status = vm_region_map_object(
@@ -418,7 +410,6 @@ kern_status_t sys_vm_region_unmap_absolute(
return KERN_INVALID_ARGUMENT;
}
object_ref(region_obj);
task_unlock_irqrestore(self, flags);
off_t region_offset = address - vm_region_get_base_address(region);
@@ -458,7 +449,6 @@ kern_status_t sys_vm_region_unmap_relative(
return KERN_INVALID_ARGUMENT;
}
object_ref(region_obj);
task_unlock_irqrestore(self, flags);
status = vm_region_unmap(region, offset, length);