Don't create anything in a removed directory. Axel, please review. I
don't see how the locking in Remove()/Create() works. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25404 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
156c744335
commit
536f5d515a
@ -2320,6 +2320,15 @@ Inode::Create(Transaction &transaction, Inode *parent, const char *name,
|
||||
WriteLocked locker(parent != NULL ? &parent->Lock() : NULL);
|
||||
// the parent directory is locked during the whole inode creation
|
||||
|
||||
if (parent != NULL && parent->IsDirectory()) {
|
||||
// don't create anything in removed directories
|
||||
bool removed;
|
||||
if (get_vnode_removed(volume->FSVolume(), parent->ID(), &removed)
|
||||
!= B_OK || removed) {
|
||||
RETURN_ERROR(B_ENTRY_NOT_FOUND);
|
||||
}
|
||||
}
|
||||
|
||||
if (tree != NULL) {
|
||||
// Does the file already exist?
|
||||
off_t offset;
|
||||
|
Loading…
Reference in New Issue
Block a user