On Wed, 2009-01-21 at 12:10 -0800, Pallipadi, Venkatesh wrote:On Wed, 2009-01-14 at 13:20 -0800, Theodore Tso wrote:On Wed, Jan 14, 2009 at 08:29:37PM +0100, Peter Zijlstra wrote:Unfortunately, I cannot revert this patch alone from upstream git.I agree, this doesn't make much sense. I've looked at the patch, and38d47c1b7075bd7ec3881141bb3629da58f88dab is first bad commitHowever does a futex change make ext3 crap its pants?
commit 38d47c1b7075bd7ec3881141bb3629da58f88dab
Author: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
Date: Fri Sep 26 19:32:20 2008 +0200
futex: rely on get_user_pages() for shared futexes
On the way of getting rid of the mmap_sem requirement for shared futexes,
start by relying on get_user_pages().
Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
Acked-by: Nick Piggin <nickpiggin@xxxxxxxxxxxx>
Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
I don't see how this would cause an ext3 orphaned-inode list handling
problem
Are you sure the bisect was done correctly? Have you tried reverting
that one commit, or otherwise conclusively shown that a kernel with
this commit fails, and one without this commit works just fine?
But I consistently see
upstream git: Always produces this oops on reboot
checkout of ï38d47c1b: Always produces this oops on reboot
checkout of ïï94aca1da (one patch before the above commit): Reboots fine
without the oops.
This is petty specific to the particular userspace, looks like.
I only see this on SLES10 installation. Also, I need a non-root user
logged in at least once after boot through X to see this problem. I was
always seeing this as I had autologin on local terminal and was remotely
rebooting the system. If I just boot to init 3 or boot to init 5 with no
user logged in or boot to init 5 with root logged in, I do not see this
problem.
Ted, could this happen due an extra iput()?
In that case, Venki, does the below patch fix it?
Credit goes to Darren for spotting this.
---
kernel/futex.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/kernel/futex.c b/kernel/futex.c
index f89d373..f4132ab 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -929,7 +929,7 @@ out_unlock:
/* drop_futex_key_refs() must be called outside the spinlocks. */
while (--drop_count >= 0)
- drop_futex_key_refs(&key1);
+ drop_futex_key_refs(&key2);
out_put_keys:
put_futex_key(fshared, &key2);