Implement VM #63
@@ -426,6 +426,10 @@ syscall_mmap (int fd, void *addr)
|
|||||||
if (file_size == 0)
|
if (file_size == 0)
|
||||||
return MMAP_FAILURE;
|
return MMAP_FAILURE;
|
||||||
|
|
||||||
|
/* Ensure that the mmap page doesn't overlap with the stack. */
|
||||||
|
if (addr >= (thread_current ()->curr_esp) - PGSIZE)
|
||||||
|
return MMAP_FAILURE;
|
||||||
|
|
||||||
/* Check and ensure that there is enough space in the user virtual memory to
|
/* Check and ensure that there is enough space in the user virtual memory to
|
||||||
hold the entire file. */
|
hold the entire file. */
|
||||||
for (off_t ofs = 0; ofs < file_size; ofs += PGSIZE)
|
for (off_t ofs = 0; ofs < file_size; ofs += PGSIZE)
|
||||||
|
|||||||
Reference in New Issue
Block a user