Whamcloud - gitweb
Branch HEAD
authorbobijam <bobijam>
Tue, 24 Jun 2008 01:56:04 +0000 (01:56 +0000)
committerbobijam <bobijam>
Tue, 24 Jun 2008 01:56:04 +0000 (01:56 +0000)
b=15924
i=green, johann

Severity   : major
Bugzilla   : 15924
Description: do not process already freed flock
Details    : flock can possibly be freed by another thread before it reaches
             to ldlm_flock_completion_ast.

lustre/ChangeLog
lustre/ldlm/ldlm_flock.c

index 30e2b84..c5f1b99 100644 (file)
@@ -12,6 +12,12 @@ tbd  Sun Microsystems, Inc.
        * RHEL 4 and RHEL 5/SLES 10 clients behaves differently on 'cd' to a
         removed cwd "./" (refer to Bugzilla 14399).
 
+Severity   : major
+Bugzilla   : 15924
+Description: do not process already freed flock
+Details    : flock can possibly be freed by another thread before it reaches
+             to ldlm_flock_completion_ast.
+
 Severity   : normal
 Bugzilla   : 14480
 Description: LBUG during stress test
index 273c50c..b57fec9 100644 (file)
@@ -526,6 +526,13 @@ ldlm_flock_completion_ast(struct ldlm_lock *lock, int flags, void *data)
         RETURN(rc);
 
 granted:
+        /* before flock's complete ast gets here, the flock
+         * can possibly be freed by another thread
+         */
+        if (lock->l_destroyed) {
+                LDLM_DEBUG(lock, "already destroyed by another thread");
+                RETURN(0);
+        }
 
         LDLM_DEBUG(lock, "client-side enqueue granted");
         ns = lock->l_resource->lr_namespace;