Do not ignore the return code from afs_InitReq everywhere it is
called. If afs_InitReq fails, the vrequest could not be initialized
for some reason.
Reviewed-on: http://gerrit.openafs.org/11097
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Reviewed-by: D Brashear <shadow@your-file-system.com>
(cherry picked from commit
cdbf49f06baf33abd803b5d1ec245e58a94eec52)
Change-Id: Ia8c0368f50f77b148a1e3f41b0538b0ec7c4123d
Reviewed-on: http://gerrit.openafs.org/11163
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Reviewed-by: Gergely Madarasz <madaraszg@gmail.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
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);
credp = crref();
code = afs_InitReq(&treq, credp);
+ if (code) {
+ goto bad_dentry;
+ }
if (
(strcmp(dp->d_name.name, ".directory") == 0)) {
tryEvalOnly = 1;
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;
int stLen, stLenOld;
struct vrequest treq;
afs_int32 flag, set_parent_pag = 0;
+ int code;
AFS_STATCNT(PSetTokens);
if (!afs_resourceinit_flag) {
*acred = crref();
crfree(old_cred);
#endif
- afs_InitReq(&treq, *acred);
+ code = afs_InitReq(&treq, *acred);
+ if (code) {
+ 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,