kernel: all string parameters now take a corresponding length parameter
This commit is contained in:
@@ -70,15 +70,16 @@ enum vm_page_order vm_object_global_page_order(void)
|
||||
|
||||
struct vm_object *vm_object_create(
|
||||
const char *name,
|
||||
size_t len,
|
||||
enum vm_prot prot)
|
||||
size_t name_len,
|
||||
size_t data_len,
|
||||
vm_prot_t prot)
|
||||
{
|
||||
size_t page_bytes = VM_PAGE_SIZE;
|
||||
uintptr_t page_mask = page_bytes - 1;
|
||||
|
||||
if (len & page_mask) {
|
||||
len &= ~page_mask;
|
||||
len += page_bytes;
|
||||
if (data_len & page_mask) {
|
||||
data_len &= ~page_mask;
|
||||
data_len += page_bytes;
|
||||
}
|
||||
|
||||
struct object *obj = object_create(&vm_object_type);
|
||||
@@ -88,12 +89,13 @@ struct vm_object *vm_object_create(
|
||||
|
||||
struct vm_object *out = VM_OBJECT_CAST(obj);
|
||||
|
||||
out->vo_size = len;
|
||||
out->vo_size = data_len;
|
||||
out->vo_prot = prot;
|
||||
|
||||
if (name) {
|
||||
strncpy(out->vo_name, name, sizeof out->vo_name);
|
||||
out->vo_name[sizeof out->vo_name - 1] = '\0';
|
||||
if (name && name_len) {
|
||||
name_len = MIN(sizeof out->vo_name - 1, name_len);
|
||||
memcpy(out->vo_name, name, name_len);
|
||||
out->vo_name[name_len] = '\0';
|
||||
}
|
||||
|
||||
return out;
|
||||
@@ -101,11 +103,13 @@ struct vm_object *vm_object_create(
|
||||
|
||||
extern struct vm_object *vm_object_create_in_place(
|
||||
const char *name,
|
||||
size_t name_len,
|
||||
phys_addr_t base,
|
||||
size_t len,
|
||||
enum vm_prot prot)
|
||||
size_t data_len,
|
||||
vm_prot_t prot)
|
||||
{
|
||||
struct vm_object *vmo = vm_object_create(name, len, prot);
|
||||
struct vm_object *vmo
|
||||
= vm_object_create(name, name_len, data_len, prot);
|
||||
if (!vmo) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user