if (!kmem_cache_validate(ldlm_lock_slab, (void *)lock))
RETURN(NULL);
+ if (!lock->l_resource) {
+ CERROR("trying to lock bogus resource: lock %p\n", lock);
+ LDLM_DEBUG(lock, "ldlm_handle2lock(%p)", lock);
+ RETURN(NULL);
+ }
+ if (!lock->l_resource->lr_namespace) {
+ CERROR("trying to lock bogus namespace: lock %p\n", lock);
+ LDLM_DEBUG(lock, "ldlm_handle2lock(%p)", lock);
+ RETURN(NULL);
+ }
l_lock(&lock->l_resource->lr_namespace->ns_lock);
if (lock->l_random != handle->cookie)
GOTO(out, NULL);
retval = LDLM_LOCK_GET(lock);
EXIT;
- out:
+ out:
l_unlock(&lock->l_resource->lr_namespace->ns_lock);
return retval;
}
RETURN(-ENOMEM);
}
dlm_req = lustre_msg_buf(req->rq_reqmsg, 0);
+ if (!dlm_req) {
+ CERROR("bad request buffer for cancel\n");
+ RETURN(-EINVAL);
+ }
lock = ldlm_handle2lock(&dlm_req->lock_handle1);
if (!lock) {