remove dropbox attribute leak fix

change 6ec1846164, avoid leaking stat info,
appears to have side effects on at least macos, crashing the system
coreservicesd. revoke the change until the exact behavior we want is
better understood.

Change-Id: I2a270750f9cef5ac6ecf1144d86988f030f78efe
Reviewed-on: http://gerrit.openafs.org/1388
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
This commit is contained in:
Derrick Brashear 2010-02-24 11:13:23 -05:00
parent 7f4a67b8f0
commit 142883cae8

View File

@ -189,6 +189,7 @@ afs_getattr(OSI_VC_DECL(avc), struct vattr *attrs, afs_ucred_t *acred)
afs_int32 code;
struct vrequest treq;
struct unixuser *au;
int inited = 0;
OSI_VC_CONVERT(avc);
AFS_STATCNT(afs_getattr);
@ -212,23 +213,15 @@ afs_getattr(OSI_VC_DECL(avc), struct vattr *attrs, afs_ucred_t *acred)
afs_PutFakeStat(&fakestat);
return code;
}
#if defined(AFS_SUN5_ENV) || defined(AFS_DARWIN_ENV) && !defined(AFS_DARWIN80_ENV)
#if defined(AFS_SUN5_ENV)
if (flags & ATTR_HINT)
#else
if (avc->f.states & CUBCinit)
if (flags & ATTR_HINT) {
code = afs_CopyOutAttrs(avc, attrs);
return code;
}
#endif
{
if (!(code = afs_InitReq(&treq, acred))) {
if (vType(avc) != VDIR && vType(avc) != VLNK &&
!afs_AccessOK(avc, PRSFS_READ, &treq, DONT_CHECK_MODE_BITS)) {
code = EACCES;
}
if (!code)
code = afs_CopyOutAttrs(avc, attrs);
}
#if defined(AFS_DARWIN_ENV) && !defined(AFS_DARWIN80_ENV)
if (avc->f.states & CUBCinit) {
code = afs_CopyOutAttrs(avc, attrs);
return code;
}
#endif
@ -242,11 +235,13 @@ afs_getattr(OSI_VC_DECL(avc), struct vattr *attrs, afs_ucred_t *acred)
if (afs_shuttingdown)
return EIO;
code = afs_InitReq(&treq, acred);
if (code == 0 && !(avc->f.states & CStatd)) {
code = afs_VerifyVCache2(avc, &treq);
}
if (!(avc->f.states & CStatd)) {
if (!(code = afs_InitReq(&treq, acred))) {
code = afs_VerifyVCache2(avc, &treq);
inited = 1;
}
} else
code = 0;
#ifdef AFS_BOZONLOCK_ENV
if (code == 0)
@ -254,17 +249,17 @@ afs_getattr(OSI_VC_DECL(avc), struct vattr *attrs, afs_ucred_t *acred)
afs_BozonUnlock(&avc->pvnLock, avc);
#endif
if (code == 0 && vType(avc) != VDIR && vType(avc) != VLNK &&
!afs_AccessOK(avc, PRSFS_READ, &treq, DONT_CHECK_MODE_BITS)) {
code = EACCES;
}
if (code == 0) {
osi_FlushText(avc); /* only needed to flush text if text locked last time */
code = afs_CopyOutAttrs(avc, attrs);
if (afs_nfsexporter) {
if (!inited) {
if ((code = afs_InitReq(&treq, acred)))
return code;
inited = 1;
}
if (AFS_NFSXLATORREQ(acred)) {
if ((vType(avc) != VDIR)
&& !afs_AccessOK(avc, PRSFS_READ, &treq,