Always release filesys_lock when checking if file is valid in process_execute

This commit is contained in:
2024-11-12 20:07:51 +00:00
parent d878dbc132
commit ca9d23edf9

View File

@@ -82,14 +82,15 @@ process_execute (const char *cmd)
of the process. */ of the process. */
char *file_name = strtok_r (cmd_copy, " ", &data->cmd_saveptr); char *file_name = strtok_r (cmd_copy, " ", &data->cmd_saveptr);
/* NOTE: Currently, the file being executed is closed in load () and then /* NOTE: Currently, the file being executed is closed in load () and then
reopened here. Because load is an exported public function, this reopened here. Because load is an exported public function, this
might be necessary. */ might be necessary. */
lock_acquire (&filesys_lock); lock_acquire (&filesys_lock);
/* Validates that the current file to be executed is a valid file */ /* Validates that the current file to be executed is a valid file */
if (filesys_open (file_name) == NULL) bool valid_file = filesys_open (file_name) != NULL;
return TID_ERROR;
lock_release (&filesys_lock); lock_release (&filesys_lock);
if (!valid_file)
return TID_ERROR;
/* Create a new thread to execute the command, by initializing /* Create a new thread to execute the command, by initializing
it running the function 'start_process' with the appropriate it running the function 'start_process' with the appropriate