mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-02 07:28:21 +00:00
properly zero memory on demand paging and mmap
This commit is contained in:
@@ -580,6 +580,8 @@ bool vmm_dealwithrequest(void* addr, long error, bool user){
|
|||||||
|
|
||||||
status = true;
|
status = true;
|
||||||
|
|
||||||
|
memset(addr, 0, PAGE_SIZE);
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
||||||
spinlock_release(lock);
|
spinlock_release(lock);
|
||||||
|
|||||||
@@ -84,13 +84,13 @@ syscallret syscall_mmap(void* hint, size_t len, int prot, int flags, int fd, off
|
|||||||
if(ret == NULL && (flags & MAP_FIXED) == 0)
|
if(ret == NULL && (flags & MAP_FIXED) == 0)
|
||||||
ret = vmm_allocfrom(USER_ALLOC_START, mmuflags, plen);
|
ret = vmm_allocfrom(USER_ALLOC_START, mmuflags, plen);
|
||||||
|
|
||||||
if(!ret){
|
if(!ret)
|
||||||
retv.errno = ENOMEM;
|
retv.errno = ENOMEM;
|
||||||
if(flags & MAP_ANON)
|
else{
|
||||||
memset(ret, 0, plen);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
retv.ret = ret;
|
retv.ret = ret;
|
||||||
|
if(hint && (flags & MAP_ANON))
|
||||||
|
memset(ret, 0, plen*PAGE_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
return retv;
|
return retv;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user