From: pschwan Date: Wed, 9 Oct 2002 19:49:41 +0000 (+0000) Subject: b=619803 X-Git-Tag: 0.5.14~27 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=a128d30d6083dbbbf72475be7840ddeff602dd00;p=fs%2Flustre-release.git b=619803 Unset cookie when freeing lock, check cookie before deref in handle2lock --- diff --git a/lustre/ldlm/ldlm_lock.c b/lustre/ldlm/ldlm_lock.c index db2cf23..295abfe 100644 --- a/lustre/ldlm/ldlm_lock.c +++ b/lustre/ldlm/ldlm_lock.c @@ -165,6 +165,7 @@ void ldlm_lock_put(struct ldlm_lock *lock) spin_unlock(&ns->ns_counter_lock); lock->l_resource = NULL; + lock->l_random = 0xdeadbeefcafebabe; if (lock->l_export && lock->l_export->exp_connection) ptlrpc_put_connection(lock->l_export->exp_connection); kmem_cache_free(ldlm_lock_slab, lock); @@ -331,6 +332,11 @@ struct ldlm_lock *ldlm_handle2lock(struct lustre_handle *handle) GOTO(out2, retval); } + if (lock->l_random != handle->cookie) { + CERROR("bogus cookie: lock "LPX64", handle "LPX64"\n", + lock->l_random, handle->cookie); + GOTO(out, NULL); + } if (!lock->l_resource) { CERROR("trying to lock bogus resource: lock %p\n", lock); LDLM_DEBUG(lock, "ldlm_handle2lock(%p)", lock); @@ -341,11 +347,6 @@ struct ldlm_lock *ldlm_handle2lock(struct lustre_handle *handle) LDLM_DEBUG(lock, "ldlm_handle2lock(%p)", lock); GOTO(out2, retval); } - if (lock->l_random != handle->cookie) { - CERROR("bogus cookie: lock "LPX64", handle "LPX64"\n", - lock->l_random, handle->cookie); - GOTO(out, NULL); - } l_lock(&lock->l_resource->lr_namespace->ns_lock); if (lock->l_flags & LDLM_FL_DESTROYED) {