ICL_TYPE_INT32, ioflag, ICL_TYPE_INT32, rw, ICL_TYPE_INT32, 0);
/* get a validated vcache entry */
- afs_InitReq(&treq, cr);
+ error = afs_InitReq(&treq, cr);
+ if (error)
+ return afs_CheckCode(error, NULL, 63);
+
error = afs_VerifyVCache(avc, &treq);
if (error)
return afs_CheckCode(error, &treq, 51);
/*
* mimic afs_close
*/
- afs_InitReq(&treq, acred);
- if (afs_BBusy()) {
+ code = afs_InitReq(&treq, acred);
+ if (code) {
+ code = afs_CheckCode(code, NULL, 64);
+ AFS_RWUNLOCK(vp, VRWLOCK_WRITE);
+ } else if (afs_BBusy()) {
/* do it yourself if daemons are all busy */
ObtainWriteLock(&avc->lock, 239);
code = afs_StoreOnLastReference(avc, &treq);
int error;
/* get a validated vcache entry */
- afs_InitReq(&treq, cr);
+ error = afs_InitReq(&treq, cr);
+ if (error)
+ return afs_CheckCode(error, NULL, 65);
+
error = afs_VerifyVCache(avc, &treq);
if (error)
return afs_CheckCode(error, &treq, 53);
bparms = afs_osi_Alloc(sizeof(struct nocache_read_request));
bparms->areq = afs_osi_Alloc(sizeof(struct vrequest));
- afs_InitReq(bparms->areq, get_user_struct()->u_cred);
+ code = afs_InitReq(bparms->areq, get_user_struct()->u_cred);
+ if (code) {
+ afs_osi_Free(bparms->areq, sizeof(struct vrequest));
+ afs_osi_Free(bparms, sizeof(struct nocache_read_request));
+ errno = code;
+ return -1;
+ }
bparms->auio = &uio;
bparms->offset = offset;
if (set_parent_pag) {
if (_settok_setParentPag(acred) == 0) {
- afs_InitReq(&treq, *acred);
+ code = afs_InitReq(&treq, *acred);
+ if (code) {
+ return code;
+ }
areq = &treq;
}
}
*acred = crref();
crfree(old_cred);
#endif
- afs_InitReq(&treq, *acred);
+ code = afs_InitReq(&treq, *acred);
+ if (code) {
+ xdr_free((xdrproc_t) xdr_ktc_setTokenData, &tokenSet);
+ return code;
+ }
areq = &treq;
}
}
ReleaseReadLock(&afs_xvcache);
ObtainWriteLock(&tvc->lock, 51);
do {
- afs_InitReq(&treq, afs_osi_credp);
+ code = afs_InitReq(&treq, afs_osi_credp);
+ if (code) {
+ code = -1;
+ break; /* shutting down: do not try to extend the lock */
+ }
treq.flags |= O_NONBLOCK;
tc = afs_Conn(&tvc->f.fid, &treq, SHARED_LOCK, &rxconn);
/* XXXX Find better place-holder for cred XXXX */
cred = (afs_ucred_t *)tvc->linkData;
tvc->linkData = NULL; /* XXX */
- afs_InitReq(&ureq, cred);
+ code = afs_InitReq(&ureq, cred);
afs_Trace2(afs_iclSetp, CM_TRACE_ACTCCORE,
ICL_TYPE_POINTER, tvc, ICL_TYPE_INT32,
tvc->execsOrWriters);
- code = afs_StoreOnLastReference(tvc, &ureq);
+ if (!code) { /* avoid store when shutting down */
+ code = afs_StoreOnLastReference(tvc, &ureq);
+ }
ReleaseWriteLock(&tvc->lock);
#ifdef AFS_BOZONLOCK_ENV
afs_BozonUnlock(&tvc->pvnLock, tvc);
return NULL;
}
+ code = afs_InitReq(&treq, afs_osi_credp); /* *must* be unauth for vldb */
+ if (code) {
+ return NULL;
+ }
+
/* allow null request if we don't care about ENODEV/ETIMEDOUT distinction */
if (!areq)
areq = &treq;
tve = (struct vldbentry *)(tbuffer + 1024);
ntve = (struct nvldbentry *)tve;
utve = (struct uvldbentry *)tve;
- afs_InitReq(&treq, afs_osi_credp); /* *must* be unauth for vldb */
do {
tconn =
afs_ConnByMHosts(tcell->cellHosts, tcell->vlport, tcell->cellNum,