diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-12-26 17:50:11 +0200 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-12-26 17:50:11 +0200 |
| commit | d98ec57128628b81fcd32269a92742a037b7f713 (patch) | |
| tree | 0e3f8d78d8347ef0a6e69d41b9d9be20c822b642 /common/vmem.c | |
| parent | a64f3588ff5da7f148659ccb0eff844ccfb57088 (diff) | |
| download | kmi-d98ec57128628b81fcd32269a92742a037b7f713.tar.gz kmi-d98ec57128628b81fcd32269a92742a037b7f713.zip | |
First useful jump to userspace!
Diffstat (limited to 'common/vmem.c')
| -rw-r--r-- | common/vmem.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/common/vmem.c b/common/vmem.c index 7b1fa4f..229963c 100644 --- a/common/vmem.c +++ b/common/vmem.c @@ -299,8 +299,11 @@ vm_t alloc_region(struct sp_reg_root *r, vm_t alloc_fixed_region(struct sp_reg_root *r, vm_t start, size_t size, size_t *actual_size) { - *actual_size = align_up(size, BASE_PAGE_SIZE); - size_t pages = __page(*actual_size); + size_t asize = align_up(size, BASE_PAGE_SIZE); + if(actual_size) + *actual_size = asize; + + size_t pages = __page(asize); start = __page(start); struct sp_mem *m = sp_find_used_closest(r, start); @@ -309,7 +312,7 @@ vm_t alloc_fixed_region(struct sp_reg_root *r, /* locate actual region where start is between the region start and end */ while(!((m->start <= start) && (start <= m->end))){ - if(start < m->start) + if(start > m->start) m = m->next; else m = m->prev; |
