nfs4: Fix #9558: in some cases sending SETATTR without open owner is legal

This commit is contained in:
Pawel Dziepak
2013-03-26 02:45:46 +01:00
parent a198eedcc7
commit bbd26dbf1e
@@ -642,18 +642,17 @@ Inode::WriteStat(const struct stat* st, uint32 mask, OpenAttrCookie* cookie)
if (cookie == NULL) {
MutexLocker stateLocker(fStateLock);
ASSERT(fOpenState != NULL);
ASSERT(fOpenState != NULL || !(mask & B_STAT_SIZE));
result = NFS4Inode::WriteStat(fOpenState, attr, i);
stateLocker.Unlock();
fMetaCache.InvalidateStat();
if ((mask & B_STAT_MODE) != 0 || (mask & B_STAT_UID) != 0
|| (mask & B_STAT_GID) != 0) {
fMetaCache.InvalidateAccess();
}
} else
result = NFS4Inode::WriteStat(cookie->fOpenState, attr, i);
fMetaCache.InvalidateStat();
const uint32 kAccessMask = B_STAT_MODE | B_STAT_UID | B_STAT_GID;
if ((mask & kAccessMask) != 0)
fMetaCache.InvalidateAccess();
return result;
}