diff --git a/definitions/objects/vma.def b/definitions/objects/vma.def index 7a0dd28..6e29419 100644 --- a/definitions/objects/vma.def +++ b/definitions/objects/vma.def @@ -32,6 +32,6 @@ object vma : object { } method resize [cap:resize] { - param size size [inout] + param size size [inout] # New size for the VMA, or 0 to query the current size without changing } } diff --git a/src/kernel/objects/vm_area.h b/src/kernel/objects/vm_area.h index 263bfb6..8b96889 100644 --- a/src/kernel/objects/vm_area.h +++ b/src/kernel/objects/vm_area.h @@ -22,8 +22,8 @@ enum class vm_flags : uint32_t #define VM_FLAG(name, v) name = v, #include #undef VM_FLAG - driver_mask = 0x000fffff, ///< flags allowed via syscall for drivers - user_mask = 0x0000ffff, ///< flags allowed via syscall for non-drivers + driver_mask = 0x00ff'ffff, ///< flags allowed via syscall for drivers + user_mask = 0x000f'ffff, ///< flags allowed via syscall for non-drivers }; is_bitfield(vm_flags); diff --git a/src/kernel/syscalls/vm_area.cpp b/src/kernel/syscalls/vm_area.cpp index b7a21d2..4c065e8 100644 --- a/src/kernel/syscalls/vm_area.cpp +++ b/src/kernel/syscalls/vm_area.cpp @@ -56,7 +56,11 @@ vma_unmap(vm_area *self, process *proc) j6_status_t vma_resize(vm_area *self, size_t *size) { - *size = self->resize(*size); + if (!*size) { + *size = self->size(); + } else { + *size = self->resize(*size); + } return j6_status_ok; }