From a77555afd3fbf5d3e32099772c664d0e6d5260e0 Mon Sep 17 00:00:00 2001 From: manuel Date: Thu, 21 Jun 2012 22:09:14 +0200 Subject: add locking around file syscalls inside page table --- vm/page.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vm/page.c b/vm/page.c index b98c553..c10113a 100644 --- a/vm/page.c +++ b/vm/page.c @@ -121,7 +121,9 @@ page_load (struct page_table_entry *pte) return true; data = &pte->segment; + process_lock_filesys (); file_seek (data->file, data->ofs); + process_unlock_filesys (); /* Get a page of memory. */ uint8_t *kpage = palloc_get_page (PAL_USER); @@ -129,12 +131,15 @@ page_load (struct page_table_entry *pte) return false; /* Load this page. */ + process_lock_filesys (); if (file_read (data->file, kpage, data->read_bytes) != (int) data->read_bytes) { palloc_free_page (kpage); + process_unlock_filesys (); return false; } + process_unlock_filesys (); memset (kpage + data->read_bytes, 0, PGSIZE - data->read_bytes); /* Add the page to the process's address space. */ -- cgit v1.2.3