Fix bug in userprog-merge where file writes were denied in the wrong thread
This commit is contained in:
@@ -126,9 +126,16 @@ start_process (void *proc_start_data)
|
||||
if_.gs = if_.fs = if_.es = if_.ds = if_.ss = SEL_UDSEG;
|
||||
if_.cs = SEL_UCSEG;
|
||||
if_.eflags = FLAG_IF | FLAG_MBS;
|
||||
|
||||
|
||||
lock_acquire (&filesys_lock);
|
||||
|
||||
/* Prevent writing to the file being executed. */
|
||||
struct file *exec_file = filesys_open (data->file_name);
|
||||
thread_current ()->exec_file = exec_file;
|
||||
file_deny_write(exec_file);
|
||||
|
||||
success = load (data->file_name, &if_.eip, &if_.esp);
|
||||
|
||||
lock_release (&filesys_lock);
|
||||
|
||||
/* If load failed, quit. */
|
||||
|
||||
Reference in New Issue
Block a user