Messages in this thread Patch in this message | | | Date | Tue, 3 Oct 2017 09:35:18 -0500 | From | Josh Poimboeuf <> | Subject | Re: [4.14-rc1 x86] WARNING: kernel stack regs at f60bbb12 inswapper:1 has bad 'bp' value 0ba00000 |
| |
On Tue, Oct 03, 2017 at 10:44:13PM +0900, Tetsuo Handa wrote: > Josh Poimboeuf wrote: > > > On Tue, Oct 03, 2017 at 12:37:44PM +0200, Borislav Petkov wrote: > > > On Tue, Oct 03, 2017 at 07:29:36PM +0900, Tetsuo Handa wrote: > > > > Tetsuo Handa wrote: > > > > > Tetsuo Handa wrote: > > > > > > Tetsuo Handa wrote: > > > > > > > I'm seeing below error between > > > > > > > 4898b99c261efe32 ("Merge tag 'acpi-4.13-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm") (git bisect good (presumably)) > > > > > > > e6f3faa734a00c60 ("locking/lockdep: Fix workqueue crossrelease annotation") (git bisect bad) on linux.git . > > > > > > > > > > > > F.Y.I. This error remains as of 46c1e79fee417f15 ("Merge branch 'perf-urgent-for-linus' of > > > > > > git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip") on linux.git . > > > > > > > > > > > > > > > > This error still remains as of 6e80ecdddf4ea6f3 ("Merge branch 'libnvdimm-fixes' > > > > > of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm") on linux.git . > > > > > > > > > > I'm suspecting that this error is causing very unstable x86_32 kernel. > > > > > It seems that this error occurs (though rare frequency) even on x86_64 kernel. > > > > > > > > > > Nobody cares? > > > > > > > > > 4.14-rc3 still trivially panics due to this error. Is this problem known? > > > > Can you try with the following patch? It should hopefully give more > > useful information in the dump. > > > I see. Here is the result.
Hm, that's not what I expected to happen... I suspect this is stack corruption, with the result being slightly different every time. Can you see if this patch fixes the panic?
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c index 44c8d0d17170..b4a5e60488aa 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -1986,7 +1986,7 @@ check_prevs_add(struct task_struct *curr, struct held_lock *next) { int depth = curr->lockdep_depth; struct held_lock *hlock; - struct stack_trace trace; + static struct stack_trace trace; int (*save)(struct stack_trace *trace) = save_trace; /*
| |