提交 f12551b5 创建 作者: rsc's avatar rsc

inode reuse bug.

Suppose an inode has been used and freed. It is left marked I_VALID (the bug). Now ialloc comes along and reuses the inode. It writes the new inode type to disk and returns iget(dev, inum) to get the cache entry. Iget sees that the inode is valid and doesn't bother refreshing from disk. Now when the caller iupdates, it will write out a zero type and the file or directory has disappeared.
上级 0badeaa2
......@@ -227,7 +227,7 @@ iunlock(struct inode *ip)
panic("iunlock");
acquire(&icache.lock);
ip->flags &= ~I_BUSY;
ip->flags = 0;
wakeup(ip);
release(&icache.lock);
}
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论