diff options
author | rtm <rtm> | 2006-08-26 15:06:59 +0000 |
---|---|---|
committer | rtm <rtm> | 2006-08-26 15:06:59 +0000 |
commit | a6c28c9779da5f0b98a1698d66eae0708e395e7d (patch) | |
tree | 2c6093845cf5913c06c6af2677fdaf407cb223ab /syscall.c | |
parent | a84585de6380dfc1c9988015ba0d3c77ecfa5395 (diff) | |
download | xv6-labs-a6c28c9779da5f0b98a1698d66eae0708e395e7d.tar.gz xv6-labs-a6c28c9779da5f0b98a1698d66eae0708e395e7d.tar.bz2 xv6-labs-a6c28c9779da5f0b98a1698d66eae0708e395e7d.zip |
mkdir check error from mknod
chdir return -1 if target not a dir
Diffstat (limited to 'syscall.c')
-rw-r--r-- | syscall.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -320,6 +320,8 @@ sys_mkdir(void) return -1; nip = mknod (cp->mem + arg0, T_DIR, 0, 0); + if(nip == 0) + return -1; memset (de.name, '\0', DIRSIZ); de.name[0] = '.'; @@ -356,7 +358,7 @@ sys_chdir(void) if ((ip = namei(cp->mem + arg0, NAMEI_LOOKUP, 0, 0, 0)) == 0) return -1; - + if (ip == cp->cwd) { iput (ip); return 0; @@ -364,7 +366,7 @@ sys_chdir(void) if (ip->type != T_DIR) { iput(ip); - return 0; + return -1; } idecref(cp->cwd); |