X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/c316c28e6c8a165111d6bbc208555f5c53489818..09aa85cf875db1e6fd1317cd2b9947b9d3675d6c:/lunaix-os/kernel/mm/mmap.c diff --git a/lunaix-os/kernel/mm/mmap.c b/lunaix-os/kernel/mm/mmap.c index da1a0b6..3a8677d 100644 --- a/lunaix-os/kernel/mm/mmap.c +++ b/lunaix-os/kernel/mm/mmap.c @@ -67,13 +67,13 @@ mem_map(void** addr_out, { if (last_end < found_loc) { size_t avail_space = pos->start - found_loc; - if ((int)avail_space > 0 && avail_space > param->mlen) { + if (pos->start > found_loc && avail_space > param->mlen) { goto found; } found_loc = pos->end + PG_SIZE; } - last_end = pos->end + PG_SIZE; + last_end = pos->end; } return ENOMEM; @@ -213,7 +213,7 @@ mem_unmap(ptr_t mnt, vm_regions_t* regions, void* addr, size_t length) } } - while (&pos->head != regions && cur_addr > pos->start) { + while (&pos->head != regions && cur_addr >= pos->start) { u32_t l = pos->end - cur_addr; pos->end = cur_addr;