]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
added another 2.6.22-review patch
authorGreg Kroah-Hartman <gregkh@suse.de>
Wed, 31 Oct 2007 16:25:41 +0000 (09:25 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 31 Oct 2007 16:25:41 +0000 (09:25 -0700)
review-2.6.22/lockdep-fix-mismatched-lockdep_depth-curr_chain_hash.patch [new file with mode: 0644]
review-2.6.22/series

diff --git a/review-2.6.22/lockdep-fix-mismatched-lockdep_depth-curr_chain_hash.patch b/review-2.6.22/lockdep-fix-mismatched-lockdep_depth-curr_chain_hash.patch
new file mode 100644 (file)
index 0000000..fb6cf80
--- /dev/null
@@ -0,0 +1,50 @@
+From stable-bounces@linux.kernel.org Wed Oct 31 08:47:05 2007
+From: Gregory Haskins <ghaskins@novell.com>
+Date: Wed, 31 Oct 2007 11:44:05 -0400
+Subject: lockdep: fix mismatched lockdep_depth/curr_chain_hash
+To: Greg KH <greg@kroah.com>
+Cc: Peter Zijlstra <peterz@infradead.org>, linux-kernel <linux-kernel@vger.kernel.org>, Chuck Ebbert <cebbert@redhat.com>, mingo@elte.hu, Gregory Haskins <ghaskins@novell.com>, stable <stable@kernel.org>
+Message-ID: <20071031154313.15685.72379.stgit@ghaskins-t60p.haskins.net>
+
+From: Gregory Haskins <ghaskins@novell.com>
+
+patch 3aa416b07f0adf01c090baab26fb70c35ec17623 in mainline.
+
+lockdep: fix mismatched lockdep_depth/curr_chain_hash
+
+It is possible for the current->curr_chain_key to become inconsistent with the
+current index if the chain fails to validate.  The end result is that future
+lock_acquire() operations may inadvertently fail to find a hit in the cache
+resulting in a new node being added to the graph for every acquire.
+
+[ peterz: this might explain some of the lockdep is so _slow_ complaints. ]
+[ mingo: this does not impact the correctness of validation, but may slow
+  down future operations significantly, if the chain gets very long. ]
+
+Signed-off-by: Gregory Haskins <ghaskins@novell.com>
+Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/lockdep.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/lockdep.c
++++ b/kernel/lockdep.c
+@@ -2166,7 +2166,6 @@ out_calc_hash:
+       }
+ #endif
+       chain_key = iterate_chain_key(chain_key, id);
+-      curr->curr_chain_key = chain_key;
+       /*
+        * Trylock needs to maintain the stack of held locks, but it
+@@ -2215,6 +2214,7 @@ out_calc_hash:
+               if (unlikely(!debug_locks))
+                       return 0;
++      curr->curr_chain_key = chain_key;
+       curr->lockdep_depth++;
+       check_chain_key(curr);
+ #ifdef CONFIG_DEBUG_LOCKDEP
index ae6152e4cc34219f39cf81dc7534c1991938f661..c13f4390e791d2156202e859aa5465fad4f16c02 100644 (file)
@@ -24,3 +24,4 @@ hwmon-w83627hf-fix-setting-fan-min-right-after-driver-load.patch
 hwmon-w83627hf-don-t-assume-bank-0.patch
 i915-fix-vbl-swap-allocation-size.patch
 powerpc-fix-handling-of-stfiwx-math-emulation.patch
+lockdep-fix-mismatched-lockdep_depth-curr_chain_hash.patch