提交 13868496 创建 作者: Nickolai Zeldovich's avatar Nickolai Zeldovich

fix possible race

上级 7559ced5
...@@ -285,11 +285,14 @@ sys_open(void) ...@@ -285,11 +285,14 @@ sys_open(void)
if((ip = create(path, T_FILE, 0, 0)) == 0) if((ip = create(path, T_FILE, 0, 0)) == 0)
return -1; return -1;
} else { } else {
retry:
if((ip = namei(path)) == 0) if((ip = namei(path)) == 0)
return -1; return -1;
ilock(ip, 0); ilock(ip, 0);
if(ip->type == 0) if(ip->type == 0) {
panic("open"); iunlockput(ip);
goto retry;
}
if(ip->type == T_DIR) { if(ip->type == T_DIR) {
if (omode != O_RDONLY){ if (omode != O_RDONLY){
iunlockput(ip); iunlockput(ip);
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论