Kernel: Pass name+length to set_mmap_name() and remove SmapDisabler

This commit is contained in:
Andreas Kling 2020-01-06 11:56:59 +01:00
parent 6af8392cf8
commit 33025a8049
Notes: sideshowbarker 2024-07-19 10:18:45 +09:00
4 changed files with 27 additions and 8 deletions

View file

@ -208,17 +208,24 @@ Region* Process::region_containing(const Range& range)
return nullptr;
}
int Process::sys$set_mmap_name(void* addr, size_t size, const char* name)
int Process::sys$set_mmap_name(const Syscall::SC_set_mmap_name_params* user_params)
{
SmapDisabler disabler;
if (!validate_read_str(name))
if (!validate_read_typed(user_params))
return -EFAULT;
auto* region = region_from_range({ VirtualAddress((u32)addr), size });
Syscall::SC_set_mmap_name_params params;
copy_from_user(&params, user_params, sizeof(params));
if (!validate_read(params.name, params.name_length))
return -EFAULT;
auto name = copy_string_from_user(params.name, params.name_length);
auto* region = region_from_range({ VirtualAddress((u32)params.addr), params.size });
if (!region)
return -EINVAL;
if (!region->is_mmap())
return -EPERM;
region->set_name(String(name));
region->set_name(name);
return 0;
}