diff options
Diffstat (limited to 'exec.c')
-rw-r--r-- | exec.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -18,8 +18,11 @@ exec(char *path, char **argv) struct proghdr ph; pde_t *pgdir, *oldpgdir; - if((ip = namei(path)) == 0) + begin_trans(); + if((ip = namei(path)) == 0){ + commit_trans(); return -1; + } ilock(ip); pgdir = 0; @@ -47,6 +50,7 @@ exec(char *path, char **argv) goto bad; } iunlockput(ip); + commit_trans(); ip = 0; // Allocate two pages at the next page boundary. @@ -95,7 +99,9 @@ exec(char *path, char **argv) bad: if(pgdir) freevm(pgdir); - if(ip) + if(ip){ iunlockput(ip); + commit_trans(); + } return -1; } |