* [CRED bug?] 2.6.29-rc3 don't survive on stress workload
@ 2009-02-10 5:41 KOSAKI Motohiro
2009-02-10 7:10 ` Vegard Nossum
` (3 more replies)
0 siblings, 4 replies; 24+ messages in thread
From: KOSAKI Motohiro @ 2009-02-10 5:41 UTC (permalink / raw)
To: David Howells, Serge Hallyn, LKML; +Cc: kosaki.motohiro, Lee Schermerhorn
Hi
I periodically test kernel on stress workload.
Unfortunately, recent kerenel don't survive >24H.
It paniced with following stack.
Do you have any suggestions?
thanks!
My test box:
CPU: ia64 x8
MEM: 8GB (4GB x2node)
=================================================================
PQ-muneda login: Unable to handle kernel paging request at virtual address a040000000403400
etex[669958]: Oops 8813272891392 [1]
Modules linked in: binfmt_misc nls_iso8859_1 nls_cp437 dm_multipath scsi_dh fan sg e100 thermal button container processor mii dm_snapshot dm_zero dm_mirror dm_region_hash dm_log dm_mod lpfc mptspi mptscsih mptbase ehci_hcd ohci_hcd uhci_hcd usbcore
Pid: 669958, CPU 2, comm: etex
psr : 0000101008026038 ifs : 800000000000028a ip : [<a0000001001c45e0>] Not tainted (2.6.29-rc3)
ip is at kfree+0x40/0x2a0
unat: 0000000000000000 pfs : 0000000000000205 rsc : 0000000000000003
rnat: 00000000498f1c7b bsps: 0000000000000000 pr : 00000000005655ab
ldrs: 0000000000000000 ccv : 0000000000000130 fpsr: 0009804c8a70033f
csd : 0000000000000000 ssd : 0000000000000000
b0 : a000000100123210 b6 : a0000001001231e0 b7 : a000000100014d20
f6 : 1003e006caf999642a000 f7 : 1003e000000000183c978
f8 : 1003e0000000080000000 f9 : 100099ba0000000000000
f10 : 10014d28eb1b735286a15 f11 : 1003e000000000034a3ac
r1 : a000000100f680c0 r2 : 000000000000012f r3 : 0000000000403400
r8 : 00000000000100d0 r9 : a0000001001231e0 r10 : e000000002b6d148
r11 : a000000100d69018 r12 : e00000408a78fe20 r13 : e00000408a780000
r14 : 0000000000000130 r15 : a040000000000000 r16 : ffffffffdead4ead
r17 : 00000000dead4ead r18 : a000000100cd2274 r19 : a000000100d796b8
r20 : 0000000000004000 r21 : 0000000000004000 r22 : 000000000000000a
r23 : a0000001009a95b8 r24 : a0000001000ec2a0 r25 : e00001600999b1e0
r26 : 0000000000004000 r27 : e000000001116a48 r28 : 0000000000000002
r29 : e00000408a780d54 r30 : 0000000000004000 r31 : 0000000000004000
Call Trace:
[<a000000100017780>] show_stack+0x80/0xa0
sp=e00000408a78f9f0 bsp=e00000408a781418
[<a000000100018080>] show_regs+0x880/0x8c0
sp=e00000408a78fbc0 bsp=e00000408a7813b8
[<a000000100040290>] die+0x1b0/0x2e0
sp=e00000408a78fbc0 bsp=e00000408a781370
[<a0000001007add90>] ia64_do_page_fault+0x810/0xb00
sp=e00000408a78fbc0 bsp=e00000408a781310
[<a00000010000c860>] ia64_native_leave_kernel+0x0/0x270
sp=e00000408a78fc50 bsp=e00000408a781310
[<a0000001001c45e0>] kfree+0x40/0x2a0
sp=e00000408a78fe20 bsp=e00000408a7812c0
[<a000000100123210>] free_user_ns+0x30/0x60
sp=e00000408a78fe20 bsp=e00000408a7812a0
[<a00000010037a320>] kref_put+0xe0/0x100
sp=e00000408a78fe20 bsp=e00000408a781278
[<a0000001000c5bf0>] free_uid+0x110/0x1a0
sp=e00000408a78fe20 bsp=e00000408a781250
[<a0000001000ec340>] put_cred_rcu+0xa0/0xe0
sp=e00000408a78fe30 bsp=e00000408a781228
[<a00000010012db90>] __rcu_process_callbacks+0x2f0/0x580
sp=e00000408a78fe30 bsp=e00000408a7811e0
[<a00000010012de70>] rcu_process_callbacks+0x50/0xc0
sp=e00000408a78fe30 bsp=e00000408a7811c0
[<a0000001000b7ac0>] __do_softirq+0x220/0x320
sp=e00000408a78fe30 bsp=e00000408a781120
[<a0000001000b7c30>] do_softirq+0x70/0xc0
sp=e00000408a78fe30 bsp=e00000408a7810c0
[<a0000001000b7d00>] irq_exit+0x80/0xa0
sp=e00000408a78fe30 bsp=e00000408a7810a8
[<a000000100014600>] ia64_handle_irq+0x1e0/0x400
sp=e00000408a78fe30 bsp=e00000408a781030
[<a00000010000c860>] ia64_native_leave_kernel+0x0/0x270
sp=e00000408a78fe30 bsp=e00000408a781030
Kernel panic - not syncing: Fatal exception
Rebooting in 1 seconds..
^ permalink raw reply [flat|nested] 24+ messages in thread* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-10 5:41 [CRED bug?] 2.6.29-rc3 don't survive on stress workload KOSAKI Motohiro @ 2009-02-10 7:10 ` Vegard Nossum 2009-02-10 7:28 ` KOSAKI Motohiro ` (2 more replies) 2009-02-10 10:35 ` David Howells ` (2 subsequent siblings) 3 siblings, 3 replies; 24+ messages in thread From: Vegard Nossum @ 2009-02-10 7:10 UTC (permalink / raw) To: KOSAKI Motohiro; +Cc: David Howells, Serge Hallyn, LKML, Lee Schermerhorn [-- Attachment #1: Type: text/plain, Size: 686 bytes --] On Tue, Feb 10, 2009 at 6:41 AM, KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote: > Hi > > I periodically test kernel on stress workload. > Unfortunately, recent kerenel don't survive >24H. > > It paniced with following stack. > Do you have any suggestions? > > thanks! That stack trace looks somewhat similar to the one in http://lkml.org/lkml/2009/2/6/136 If this is reproducible, maybe a patch like the one attached can help pinpoint it? Vegard -- "The animistic metaphor of the bug that maliciously sneaked in while the programmer was not looking is intellectually dishonest as it disguises that the error is the programmer's own creation." -- E. W. Dijkstra, EWD1036 [-- Attachment #2: kref-warn_on.patch --] [-- Type: application/octet-stream, Size: 672 bytes --] diff --git a/lib/kref.c b/lib/kref.c index 1599dbf..a547ad3 100644 --- a/lib/kref.c +++ b/lib/kref.c @@ -40,7 +40,7 @@ void kref_init(struct kref *kref) */ void kref_get(struct kref *kref) { - WARN_ON(!atomic_read(&kref->refcount)); + WARN_ON(atomic_read(&kref->refcount) <= 0); atomic_inc(&kref->refcount); smp_mb__after_atomic_inc(); } @@ -63,7 +63,7 @@ int kref_put(struct kref *kref, void (*release)(struct kref *kref)) { WARN_ON(release == NULL); WARN_ON(release == (void (*)(struct kref *))kfree); - WARN_ON(!atomic_read(&kref->refcount)); + WARN_ON(atomic_read(&kref->refcount) <= 0); if (atomic_dec_and_test(&kref->refcount)) { release(kref); ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-10 7:10 ` Vegard Nossum @ 2009-02-10 7:28 ` KOSAKI Motohiro 2009-02-11 3:56 ` Vegard Nossum 2009-02-10 12:18 ` Ingo Molnar 2009-02-11 12:25 ` KOSAKI Motohiro 2 siblings, 1 reply; 24+ messages in thread From: KOSAKI Motohiro @ 2009-02-10 7:28 UTC (permalink / raw) To: Vegard Nossum Cc: kosaki.motohiro, David Howells, Serge Hallyn, LKML, Lee Schermerhorn > On Tue, Feb 10, 2009 at 6:41 AM, KOSAKI Motohiro > <kosaki.motohiro@jp.fujitsu.com> wrote: > > Hi > > > > I periodically test kernel on stress workload. > > Unfortunately, recent kerenel don't survive >24H. > > > > It paniced with following stack. > > Do you have any suggestions? > > > > thanks! > > That stack trace looks somewhat similar to the one in > http://lkml.org/lkml/2009/2/6/136 > > If this is reproducible, maybe a patch like the one attached can help > pinpoint it? Thanks. I'll try it. please wait one night, it need to reproduce. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-10 7:28 ` KOSAKI Motohiro @ 2009-02-11 3:56 ` Vegard Nossum 2009-02-11 10:48 ` David Howells 0 siblings, 1 reply; 24+ messages in thread From: Vegard Nossum @ 2009-02-11 3:56 UTC (permalink / raw) To: KOSAKI Motohiro; +Cc: David Howells, Serge Hallyn, LKML, Lee Schermerhorn On Tue, Feb 10, 2009 at 8:28 AM, KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote: >> That stack trace looks somewhat similar to the one in >> http://lkml.org/lkml/2009/2/6/136 >> >> If this is reproducible, maybe a patch like the one attached can help >> pinpoint it? > > Thanks. I'll try it. > please wait one night, it need to reproduce. Wow, it seems that I was able to reproduce it (somewhat, somehow) too: [13359.131495] ------------[ cut here ]------------ [13359.133489] kernel BUG at mm/slub.c:2750! [13359.133489] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC [13359.133489] last sysfs file: /sys/devices/pnp0/00:0d/id [13359.133489] CPU 1 [13359.133489] Modules linked in: [13359.133489] Pid: 917, comm: udevd Not tainted 2.6.29-rc3 #223 [13359.133489] RIP: 0010:[<ffffffff810b99c9>] [<ffffffff810b99c9>] kfree+0x29/7 [13359.133489] RSP: 0000:ffff88003f187e28 EFLAGS: 00010246 [13359.133489] RAX: 0100000000000400 RBX: ffffffff8171fe00 RCX: 0000000000000086 [13359.133489] RDX: ffffe20000050ec8 RSI: 0000000000000085 RDI: ffffe20000050ec8 [13359.133489] RBP: ffff88003f187e38 R08: 0000000000000585 R09: ffffffff81819cb0 [13359.133489] R10: ffff88003e457b40 R11: ffff88003f187e98 R12: ffffffff81072144 [13359.133489] R13: 0000000000000001 R14: ffffffff818b13e0 R15: 000000000000000a [13359.133489] FS: 0000000000000000(0000) GS:ffff88003f156f80(0063) knlGS:00000 [13359.218474] CS: 0010 DS: 002b ES: 002b CR0: 000000008005003b [13359.218474] CR2: 0000000043d6a0ac CR3: 000000003e407000 CR4: 00000000000006a0 [13359.218474] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [13359.239494] ------------[ cut here ]------------ [13359.239498] WARNING: at lib/kref.c:43 kref_get+0x27/0x30() [13359.239501] Hardware name: 945P-A [13359.239503] Modules linked in: [13359.239508] Pid: 2463, comm: a.out Not tainted 2.6.29-rc3 #223 [13359.239511] Call Trace: [13359.239521] [<ffffffff8103c93a>] warn_slowpath+0xb6/0xf2 [13359.239529] [<ffffffff810b5452>] ? alloc_pages_current+0xbe/0xc7 [13359.239536] [<ffffffff810b734e>] ? get_partial_node+0x22/0x87 [13359.239540] [<ffffffff810b9705>] ? __slab_alloc+0xd6/0x371 [13359.239547] [<ffffffff8103238d>] ? set_next_entity+0x8a/0xda [13359.239553] [<ffffffff811b2f9b>] kref_get+0x27/0x30 [13359.239560] [<ffffffff810465ce>] alloc_uid+0xe0/0x1d5 [13359.239568] [<ffffffff8104b501>] set_user+0x2f/0x88 [13359.239574] [<ffffffff8104b842>] sys_setreuid+0xcd/0x133 [13359.239579] [<ffffffff8102d398>] sysenter_dispatch+0x7/0x27 [13359.239582] ---[ end trace 41e0e7b4a6e4140a ]--- [13359.218474] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [13359.346481] Process udevd (pid: 917, threadinfo ffff88003e456000, task ffff8) Booting 'Fedora Core (2.6.20.9)' (spontaneous reboot) The second BUG is the one from my patch: WARN_ON(atomic_read(&kref->refcount) <= 0); This was a program that forked and did setreuid(0, 99999); setreuid(99999, 0); in a loop (to alloc/free uids quickly). My theory is that the reference counting for 'struct user_struct' is wrong in the case that CONFIG_USER_SCHED=y (check out free_user() in the two cases), but I don't know that for sure. What is the setting of this config variable in your configuration? Will refine my test program to see if I can trigger this immediately and accurately. Vegard -- "The animistic metaphor of the bug that maliciously sneaked in while the programmer was not looking is intellectually dishonest as it disguises that the error is the programmer's own creation." -- E. W. Dijkstra, EWD1036 ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-11 3:56 ` Vegard Nossum @ 2009-02-11 10:48 ` David Howells 0 siblings, 0 replies; 24+ messages in thread From: David Howells @ 2009-02-11 10:48 UTC (permalink / raw) To: Vegard Nossum, Ingo Molnar Cc: dhowells, KOSAKI Motohiro, Serge Hallyn, LKML, Lee Schermerhorn Vegard Nossum <vegard.nossum@gmail.com> wrote: > Will refine my test program to see if I can trigger this immediately > and accurately. I'm running two copies of: #include <stdlib.h> #include <unistd.h> int main() { for (;;) { if (setreuid(0, 99999) < 0) { perror("setreuid A"); exit(1); } if (setreuid(99999, 0) < 0) { perror("setreuid B"); exit(1); } } } but it doesn't seem to be showing anything interesting. I have the attached patch compiled into my kernel and enabled in the hope it might catch either this bug or Ingo's key slab corruption bug. David --- From: David Howells <dhowells@redhat.com> Subject: [PATCH] Attempt to catch atomic_dec_and_test() on freed and poisoned slab memory Add an option to attempt to catch atomic_dec_and_test() on freed and poisoned slab memory by complaining if the counter LSB is the poison value. Signed-off-by: David Howells <dhowells@redhat.com> --- arch/x86/include/asm/atomic_32.h | 8 ++++++++ arch/x86/include/asm/atomic_64.h | 8 ++++++++ lib/Kconfig.debug | 10 ++++++++++ lib/Makefile | 1 + lib/debug_poisoned_put.c | 39 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 66 insertions(+), 0 deletions(-) create mode 100644 lib/debug_poisoned_put.c diff --git a/arch/x86/include/asm/atomic_32.h b/arch/x86/include/asm/atomic_32.h index 85b46fb..b0b1a7c 100644 --- a/arch/x86/include/asm/atomic_32.h +++ b/arch/x86/include/asm/atomic_32.h @@ -101,6 +101,10 @@ static inline void atomic_dec(atomic_t *v) : "+m" (v->counter)); } +#ifdef CONFIG_DEBUG_POISONED_PUT +extern void check_atomic_dec_and_test(atomic_t *v); +#endif + /** * atomic_dec_and_test - decrement and test * @v: pointer of type atomic_t @@ -113,6 +117,10 @@ static inline int atomic_dec_and_test(atomic_t *v) { unsigned char c; +#ifdef CONFIG_DEBUG_POISONED_PUT + check_atomic_dec_and_test(v); +#endif + asm volatile(LOCK_PREFIX "decl %0; sete %1" : "+m" (v->counter), "=qm" (c) : : "memory"); diff --git a/arch/x86/include/asm/atomic_64.h b/arch/x86/include/asm/atomic_64.h index 8c21731..6a7f228 100644 --- a/arch/x86/include/asm/atomic_64.h +++ b/arch/x86/include/asm/atomic_64.h @@ -102,6 +102,10 @@ static inline void atomic_dec(atomic_t *v) : "m" (v->counter)); } +#ifdef CONFIG_DEBUG_POISONED_PUT +extern void check_atomic_dec_and_test(atomic_t *v); +#endif + /** * atomic_dec_and_test - decrement and test * @v: pointer of type atomic_t @@ -114,6 +118,10 @@ static inline int atomic_dec_and_test(atomic_t *v) { unsigned char c; +#ifdef CONFIG_DEBUG_POISONED_PUT + check_atomic_dec_and_test(v); +#endif + asm volatile(LOCK_PREFIX "decl %0; sete %1" : "=m" (v->counter), "=qm" (c) : "m" (v->counter) : "memory"); diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 29044f5..bb5801b 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -221,6 +221,16 @@ config TIMER_STATS (it defaults to deactivated on bootup and will only be activated if some application like powertop activates it explicitly). +config DEBUG_POISONED_PUT + bool "Catch puts of already released memory" + depends on DEBUG_KERNEL + help + If you say Y here, atomic_dec_and_test() will complain if it sees + what might be a poisoned value from a released slab object or a + counter already reduced to nothing. Note that this test cannot say + for certain that the value is in error - the value on the counter + might be completely legitimate. + config DEBUG_OBJECTS bool "Debug object operations" depends on DEBUG_KERNEL diff --git a/lib/Makefile b/lib/Makefile index 32b0e64..c47cc74 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -44,6 +44,7 @@ obj-$(CONFIG_PLIST) += plist.o obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o obj-$(CONFIG_DEBUG_LIST) += list_debug.o obj-$(CONFIG_DEBUG_OBJECTS) += debugobjects.o +obj-$(CONFIG_DEBUG_POISONED_PUT) += debug_poisoned_put.o ifneq ($(CONFIG_HAVE_DEC_LOCK),y) lib-y += dec_and_lock.o diff --git a/lib/debug_poisoned_put.c b/lib/debug_poisoned_put.c new file mode 100644 index 0000000..1e04325 --- /dev/null +++ b/lib/debug_poisoned_put.c @@ -0,0 +1,39 @@ +/* Deal with a poisoned atomic counter + * + * Copyright (C) 2009 Red Hat, Inc. All Rights Reserved. + * Written by David Howells (dhowells@redhat.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public Licence + * as published by the Free Software Foundation; either version + * 2 of the Licence, or (at your option) any later version. + */ + +#include <linux/kernel.h> +#include <linux/poison.h> +#include <linux/module.h> +#include <asm/atomic.h> + +/* + * Check to see if an atomic_dec_and_test() is being performed on released + * and poisoned memory + */ +extern void check_atomic_dec_and_test(atomic_t *v) +{ + int c = v->counter; + + if (unlikely( +#ifdef CONFIG_DEBUG_SLAB + c == (POISON_FREE << 24 | + POISON_FREE << 16 | + POISON_FREE << 8 | + POISON_FREE) || +#endif + c <= 0)) { + printk(KERN_WARNING "atomic_dec_and_test() of suspicious value." + " insn=%p addr=%p val=%d\n", + __builtin_return_address(0), v, c); + dump_stack(); + } +} +EXPORT_SYMBOL(check_atomic_dec_and_test); ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-10 7:10 ` Vegard Nossum 2009-02-10 7:28 ` KOSAKI Motohiro @ 2009-02-10 12:18 ` Ingo Molnar 2009-02-11 12:25 ` KOSAKI Motohiro 2 siblings, 0 replies; 24+ messages in thread From: Ingo Molnar @ 2009-02-10 12:18 UTC (permalink / raw) To: Vegard Nossum, Rafael J. Wysocki Cc: KOSAKI Motohiro, David Howells, Serge Hallyn, LKML, Lee Schermerhorn * Vegard Nossum <vegard.nossum@gmail.com> wrote: > On Tue, Feb 10, 2009 at 6:41 AM, KOSAKI Motohiro > <kosaki.motohiro@jp.fujitsu.com> wrote: > > Hi > > > > I periodically test kernel on stress workload. > > Unfortunately, recent kerenel don't survive >24H. > > > > It paniced with following stack. > > Do you have any suggestions? > > > > thanks! > > That stack trace looks somewhat similar to the one in > http://lkml.org/lkml/2009/2/6/136 > > If this is reproducible, maybe a patch like the one attached can help > pinpoint it? hm, it might also be related to the SLAB corruption i reported a month ago, in this area of code: http://bugzilla.kernel.org/show_bug.cgi?id=12503 http://marc.info/?l=linux-kernel&m=123204353425825&w=4 it appeared in the merge window. Ingo ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-10 7:10 ` Vegard Nossum 2009-02-10 7:28 ` KOSAKI Motohiro 2009-02-10 12:18 ` Ingo Molnar @ 2009-02-11 12:25 ` KOSAKI Motohiro 2009-02-11 12:54 ` David Howells 2 siblings, 1 reply; 24+ messages in thread From: KOSAKI Motohiro @ 2009-02-11 12:25 UTC (permalink / raw) To: Vegard Nossum Cc: kosaki.motohiro, David Howells, Serge Hallyn, LKML, Lee Schermerhorn, Eric Sesterhenn, Andrew Morton, containers Hi > On Tue, Feb 10, 2009 at 6:41 AM, KOSAKI Motohiro > <kosaki.motohiro@jp.fujitsu.com> wrote: > > Hi > > > > I periodically test kernel on stress workload. > > Unfortunately, recent kerenel don't survive >24H. > > > > It paniced with following stack. > > Do you have any suggestions? > > > > thanks! > > That stack trace looks somewhat similar to the one in > http://lkml.org/lkml/2009/2/6/136 > > If this is reproducible, maybe a patch like the one attached can help > pinpoint it? Unfortunately, your patch don't help analysis. (and slub debug option don't help too) Today's panic information is here. ---------------------------------------------------- e100 processor container button mii dm_snapshot dm_zero dm_mirror dm_region_hash dm_log dm_mod lpfc mptspi mptscsih mptbase ehci_hcd ohci_hcd uhci_hcd usbcore Pid: 315753, CPU 0, comm: pidof psr : 0000101008026038 ifs : 800000000000028a ip : [<a0000001001c4b00>] Not tainted (2.6.29-rc3) ip is at kfree+0x40/0x2c0 unat: 0000000000000000 pfs : 0000000000000205 rsc : 0000000000000003 rnat: 0000000000000000 bsps: 0000000000000000 pr : 0000000000aa95a5 ldrs: 0000000000000000 ccv : 0000000000000093 fpsr: 0009804c8a70033f csd : 0000000000000000 ssd : 0000000000000000 b0 : a000000100123210 b6 : a0000001001231e0 b7 : a000000100014d20 f6 : 1003e6b6b6b6b6b6b6b6b f7 : 0ffe6af8e85a500000000 f8 : 1003e0000000000000a50 f9 : 1003efffffffffffffef8 f10 : 100029ffffffff55c35f6 f11 : 1003e0000000000000000 r1 : a000000100f683c0 r2 : 0000000000000092 r3 : 0000000000403400 r8 : 00000000000100d0 r9 : a000000100d6fe60 r10 : a000000100d6fe60 r11 : a0000001001231e0 r12 : e00000408c61fc30 r13 : e00000408c610000 r14 : 0000000000000093 r15 : a040000000000000 r16 : ffffffffdead4ead r17 : 00000000dead4ead r18 : a000000100cd2274 r19 : a000000100d6b6c0 r20 : 0000000000004000 r21 : 0000000000004000 r22 : 0000000000000011 r23 : e000016006920a10 r24 : 0000000000000019 r25 : 5fc0000000000000 r26 : e000016006920a0f r27 : e000016006920a12 r28 : 0000000000000000 r29 : e00000408c610d54 r30 : 0000000000000000 r31 : 0000000000000008 Call Trace: [<a000000100017780>] show_stack+0x80/0xa0 sp=e00000408c61f800 bsp=e00000408c611598 [<a000000100018080>] show_regs+0x880/0x8c0 sp=e00000408c61f9d0 bsp=e00000408c611540 [<a000000100040290>] die+0x1b0/0x2e0 sp=e00000408c61f9d0 bsp=e00000408c6114f8 [<a0000001007af0b0>] ia64_do_page_fault+0x810/0xb00 sp=e00000408c61f9d0 bsp=e00000408c611498 [<a00000010000c860>] ia64_native_leave_kernel+0x0/0x270 sp=e00000408c61fa60 bsp=e00000408c611498 [<a0000001001c4b00>] kfree+0x40/0x2c0 sp=e00000408c61fc30 bsp=e00000408c611448 [<a000000100123210>] free_user_ns+0x30/0x60 sp=e00000408c61fc30 bsp=e00000408c611428 [<a00000010037b5f0>] kref_put+0x110/0x140 sp=e00000408c61fc30 bsp=e00000408c611400 [<a0000001000c5bf0>] free_uid+0x110/0x1a0 sp=e00000408c61fc30 bsp=e00000408c6113d0 [<a0000001000ec340>] put_cred_rcu+0xa0/0xe0 sp=e00000408c61fc40 bsp=e00000408c6113a8 [<a00000010012db90>] __rcu_process_callbacks+0x2f0/0x580 sp=e00000408c61fc40 bsp=e00000408c611368 [<a00000010012de70>] rcu_process_callbacks+0x50/0xc0 sp=e00000408c61fc40 bsp=e00000408c611348 [<a0000001000b7ac0>] __do_softirq+0x220/0x320 sp=e00000408c61fc40 bsp=e00000408c6112a8 [<a0000001000b7c30>] do_softirq+0x70/0xc0 sp=e00000408c61fc40 bsp=e00000408c611248 [<a0000001000b7d00>] irq_exit+0x80/0xa0 sp=e00000408c61fc40 bsp=e00000408c611230 [<a000000100014600>] ia64_handle_irq+0x1e0/0x400 sp=e00000408c61fc40 bsp=e00000408c6111b0 [<a00000010000c860>] ia64_native_leave_kernel+0x0/0x270 sp=e00000408c61fc40 bsp=e00000408c6111b0 [<a0000001001c5940>] kmem_cache_alloc+0x1e0/0x260 sp=e00000408c61fe10 bsp=e00000408c611150 [<a000000100219e10>] seq_read+0x530/0x980 sp=e00000408c61fe10 bsp=e00000408c6110b8 [<a0000001001de180>] vfs_read+0x1a0/0x320 sp=e00000408c61fe20 bsp=e00000408c611068 [<a0000001001de830>] sys_read+0x70/0xe0 sp=e00000408c61fe20 bsp=e00000408c610fe8 [<a00000010000c6c0>] ia64_ret_from_syscall+0x0/0x20 sp=e00000408c61fe30 bsp=e00000408c610fe8 [<a000000000010720>] __kernel_syscall_via_break+0x0/0x20 sp=e00000408c620000 bsp=e00000408c610fe8 Kernel panic - not syncing: Fatal exception ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-11 12:25 ` KOSAKI Motohiro @ 2009-02-11 12:54 ` David Howells 0 siblings, 0 replies; 24+ messages in thread From: David Howells @ 2009-02-11 12:54 UTC (permalink / raw) To: KOSAKI Motohiro Cc: dhowells, Vegard Nossum, Serge Hallyn, LKML, Lee Schermerhorn, Eric Sesterhenn, Andrew Morton, containers KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote: > f6 : 1003e6b6b6b6b6b6b6b6b f7 : 0ffe6af8e85a500000000 I'd guess you now have CONFIG_DEBUG_SLAB turned on. That looks like slab poisoning in register f6. > r17 : 00000000dead4ead r18 : a000000100cd2274 r19 : a000000100d6b6c0 And that looks like SPINLOCK_MAGIC in r17, so I'd guess something just successfully validated a spinlock, possibly atomic_dec_and_lock() in free_uid(). This may mean that the user_struct being released is valid, but the user_namespace it refers to is already released. David ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-10 5:41 [CRED bug?] 2.6.29-rc3 don't survive on stress workload KOSAKI Motohiro 2009-02-10 7:10 ` Vegard Nossum @ 2009-02-10 10:35 ` David Howells 2009-02-10 10:49 ` KOSAKI Motohiro 2009-02-11 12:41 ` David Howells 2009-02-12 11:09 ` David Howells 3 siblings, 1 reply; 24+ messages in thread From: David Howells @ 2009-02-10 10:35 UTC (permalink / raw) To: KOSAKI Motohiro; +Cc: dhowells, Serge Hallyn, LKML, Lee Schermerhorn KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote: > It paniced with following stack. > Do you have any suggestions? Are you running with CONFIG_DEBUG_SLAB=y? David ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-10 10:35 ` David Howells @ 2009-02-10 10:49 ` KOSAKI Motohiro 0 siblings, 0 replies; 24+ messages in thread From: KOSAKI Motohiro @ 2009-02-10 10:49 UTC (permalink / raw) To: David Howells; +Cc: kosaki.motohiro, Serge Hallyn, LKML, Lee Schermerhorn > KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote: > > > It paniced with following stack. > > Do you have any suggestions? > > Are you running with CONFIG_DEBUG_SLAB=y? No. I try this tonight testing. thanks. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-10 5:41 [CRED bug?] 2.6.29-rc3 don't survive on stress workload KOSAKI Motohiro 2009-02-10 7:10 ` Vegard Nossum 2009-02-10 10:35 ` David Howells @ 2009-02-11 12:41 ` David Howells 2009-02-11 12:52 ` KOSAKI Motohiro 2009-02-12 11:09 ` David Howells 3 siblings, 1 reply; 24+ messages in thread From: David Howells @ 2009-02-11 12:41 UTC (permalink / raw) To: KOSAKI Motohiro; +Cc: dhowells, Serge Hallyn, LKML, Lee Schermerhorn KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote: > I periodically test kernel on stress workload. Can you say more about the stress workload you're using? And can you give us your kernel config? David ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-11 12:41 ` David Howells @ 2009-02-11 12:52 ` KOSAKI Motohiro 2009-02-11 13:09 ` David Howells 0 siblings, 1 reply; 24+ messages in thread From: KOSAKI Motohiro @ 2009-02-11 12:52 UTC (permalink / raw) To: David Howells; +Cc: kosaki.motohiro, Serge Hallyn, LKML, Lee Schermerhorn [-- Attachment #1: Type: text/plain, Size: 395 bytes --] > KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote: > > > I periodically test kernel on stress workload. > > Can you say more about the stress workload you're using? usex(http://people.redhat.com/~anderson/usex/usex/usex.html) + endless kernel compile + some memory stress workload (e.g. mlock) + dd and random file i/o program. > And can you give us your kernel config? attached. [-- Attachment #2: .config --] [-- Type: application/octet-stream, Size: 35211 bytes --] # # Automatically generated make config: don't edit # Linux kernel version: 2.6.29-rc3 # Tue Feb 10 19:45:26 2009 # CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # # General setup # CONFIG_EXPERIMENTAL=y CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_TASKSTATS is not set # CONFIG_AUDIT is not set # # RCU Subsystem # CONFIG_CLASSIC_RCU=y # CONFIG_TREE_RCU is not set # CONFIG_PREEMPT_RCU is not set # CONFIG_TREE_RCU_TRACE is not set # CONFIG_PREEMPT_RCU_TRACE is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=20 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_GROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y # CONFIG_RT_GROUP_SCHED is not set CONFIG_USER_SCHED=y # CONFIG_CGROUP_SCHED is not set CONFIG_CGROUPS=y CONFIG_CGROUP_DEBUG=y CONFIG_CGROUP_NS=y # CONFIG_CGROUP_FREEZER is not set CONFIG_CGROUP_DEVICE=y CONFIG_CPUSETS=y CONFIG_PROC_PID_CPUSET=y CONFIG_CGROUP_CPUACCT=y CONFIG_RESOURCE_COUNTERS=y CONFIG_CGROUP_MEM_RES_CTLR=y CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y CONFIG_MM_OWNER=y CONFIG_SYSFS_DEPRECATED=y CONFIG_SYSFS_DEPRECATED_V2=y CONFIG_RELAY=y CONFIG_NAMESPACES=y CONFIG_UTS_NS=y # CONFIG_IPC_NS is not set CONFIG_USER_NS=y CONFIG_PID_NS=y # CONFIG_NET_NS is not set CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y # CONFIG_EMBEDDED is not set CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y CONFIG_KALLSYMS_ALL=y # CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y CONFIG_ELF_CORE=y CONFIG_COMPAT_BRK=y CONFIG_BASE_FULL=y CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_AIO=y CONFIG_VM_EVENT_COUNTERS=y CONFIG_PCI_QUIRKS=y CONFIG_SLUB_DEBUG=y # CONFIG_SLAB is not set CONFIG_SLUB=y # CONFIG_SLOB is not set CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y CONFIG_MARKERS=y CONFIG_OPROFILE=m CONFIG_HAVE_OPROFILE=y CONFIG_KPROBES=y CONFIG_KRETPROBES=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y CONFIG_HAVE_ARCH_TRACEHOOK=y CONFIG_HAVE_DMA_ATTRS=y CONFIG_USE_GENERIC_SMP_HELPERS=y # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 CONFIG_MODULES=y # CONFIG_MODULE_FORCE_LOAD is not set CONFIG_MODULE_UNLOAD=y # CONFIG_MODULE_FORCE_UNLOAD is not set CONFIG_MODVERSIONS=y # CONFIG_MODULE_SRCVERSION_ALL is not set CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y # CONFIG_BLK_DEV_IO_TRACE is not set # CONFIG_BLK_DEV_BSG is not set # CONFIG_BLK_DEV_INTEGRITY is not set CONFIG_BLOCK_COMPAT=y # # IO Schedulers # CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=y CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y # CONFIG_DEFAULT_AS is not set # CONFIG_DEFAULT_DEADLINE is not set CONFIG_DEFAULT_CFQ=y # CONFIG_DEFAULT_NOOP is not set CONFIG_DEFAULT_IOSCHED="cfq" # CONFIG_FREEZER is not set # # Processor type and features # CONFIG_IA64=y CONFIG_64BIT=y CONFIG_ZONE_DMA=y CONFIG_QUICKLIST=y CONFIG_MMU=y CONFIG_SWIOTLB=y CONFIG_IOMMU_HELPER=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_TIME=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_DMI=y CONFIG_EFI=y CONFIG_GENERIC_IOMAP=y CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_AUDIT_ARCH=y # CONFIG_PARAVIRT_GUEST is not set CONFIG_IA64_GENERIC=y # CONFIG_IA64_DIG is not set # CONFIG_IA64_DIG_VTD is not set # CONFIG_IA64_HP_ZX1 is not set # CONFIG_IA64_HP_ZX1_SWIOTLB is not set # CONFIG_IA64_SGI_SN2 is not set # CONFIG_IA64_SGI_UV is not set # CONFIG_IA64_HP_SIM is not set # CONFIG_IA64_XEN_GUEST is not set # CONFIG_ITANIUM is not set CONFIG_MCKINLEY=y # CONFIG_IA64_PAGE_SIZE_4KB is not set # CONFIG_IA64_PAGE_SIZE_8KB is not set # CONFIG_IA64_PAGE_SIZE_16KB is not set CONFIG_IA64_PAGE_SIZE_64KB=y CONFIG_PGTABLE_3=y # CONFIG_PGTABLE_4 is not set CONFIG_HZ=250 # CONFIG_HZ_100 is not set CONFIG_HZ_250=y # CONFIG_HZ_300 is not set # CONFIG_HZ_1000 is not set # CONFIG_SCHED_HRTICK is not set CONFIG_IA64_L1_CACHE_SHIFT=7 CONFIG_IA64_CYCLONE=y CONFIG_IOSAPIC=y CONFIG_FORCE_MAX_ZONEORDER=17 # CONFIG_VIRT_CPU_ACCOUNTING is not set CONFIG_SMP=y CONFIG_NR_CPUS=512 CONFIG_HOTPLUG_CPU=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y # CONFIG_SCHED_SMT is not set # CONFIG_PERMIT_BSP_REMOVE is not set # CONFIG_PREEMPT_NONE is not set CONFIG_PREEMPT_VOLUNTARY=y # CONFIG_PREEMPT is not set CONFIG_SELECT_MEMORY_MODEL=y # CONFIG_FLATMEM_MANUAL is not set # CONFIG_DISCONTIGMEM_MANUAL is not set CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM=y CONFIG_NEED_MULTIPLE_NODES=y CONFIG_HAVE_MEMORY_PRESENT=y CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP=y # CONFIG_MEMORY_HOTPLUG is not set CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_MIGRATION=y CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_NR_QUICK=1 CONFIG_VIRT_TO_BUS=y CONFIG_UNEVICTABLE_LRU=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ARCH_DISCONTIGMEM_ENABLE=y CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y CONFIG_NUMA=y CONFIG_NODES_SHIFT=10 CONFIG_ARCH_POPULATES_NODE_MAP=y CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y CONFIG_HAVE_ARCH_NODEDATA_EXTENSION=y CONFIG_IA32_SUPPORT=y CONFIG_COMPAT=y CONFIG_COMPAT_FOR_U64_ALIGNMENT=y CONFIG_IA64_MCA_RECOVERY=y CONFIG_PERFMON=y CONFIG_IA64_PALINFO=y # CONFIG_IA64_MC_ERR_INJECT is not set CONFIG_SGI_SN=y # CONFIG_IA64_ESI is not set # CONFIG_IA64_HP_AML_NFW is not set # # SN Devices # CONFIG_SGI_IOC3=m CONFIG_KEXEC=y CONFIG_CRASH_DUMP=y # # Firmware Drivers # # CONFIG_FIRMWARE_MEMMAP is not set CONFIG_EFI_VARS=y CONFIG_EFI_PCDP=y CONFIG_DMIID=y CONFIG_BINFMT_ELF=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set # CONFIG_HAVE_AOUT is not set CONFIG_BINFMT_MISC=m # # Power management and ACPI options # CONFIG_PM=y # CONFIG_PM_DEBUG is not set CONFIG_ACPI=y CONFIG_ACPI_PROCFS=y CONFIG_ACPI_PROCFS_POWER=y CONFIG_ACPI_SYSFS_POWER=y CONFIG_ACPI_PROC_EVENT=y CONFIG_ACPI_BUTTON=m CONFIG_ACPI_FAN=m # CONFIG_ACPI_DOCK is not set CONFIG_ACPI_PROCESSOR=m CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=m CONFIG_ACPI_NUMA=y # CONFIG_ACPI_CUSTOM_DSDT is not set CONFIG_ACPI_BLACKLIST_YEAR=0 # CONFIG_ACPI_DEBUG is not set # CONFIG_ACPI_PCI_SLOT is not set CONFIG_ACPI_SYSTEM=y CONFIG_ACPI_CONTAINER=m # # CPU Frequency scaling # # CONFIG_CPU_FREQ is not set # # Bus options (PCI, PCMCIA) # CONFIG_PCI=y CONFIG_PCI_DOMAINS=y CONFIG_PCI_SYSCALL=y CONFIG_PCIEPORTBUS=y # CONFIG_HOTPLUG_PCI_PCIE is not set CONFIG_PCIEAER=y # CONFIG_PCIEASPM is not set CONFIG_ARCH_SUPPORTS_MSI=y CONFIG_PCI_MSI=y CONFIG_PCI_LEGACY=y # CONFIG_PCI_DEBUG is not set # CONFIG_PCI_STUB is not set CONFIG_HOTPLUG_PCI=m # CONFIG_HOTPLUG_PCI_FAKE is not set CONFIG_HOTPLUG_PCI_ACPI=m # CONFIG_HOTPLUG_PCI_ACPI_IBM is not set # CONFIG_HOTPLUG_PCI_CPCI is not set # CONFIG_HOTPLUG_PCI_SHPC is not set # CONFIG_HOTPLUG_PCI_SGI is not set # CONFIG_PCCARD is not set CONFIG_DMAR=y CONFIG_NET=y # # Networking options # CONFIG_COMPAT_NET_DEV_OPS=y CONFIG_PACKET=y # CONFIG_PACKET_MMAP is not set CONFIG_UNIX=y CONFIG_XFRM=y # CONFIG_XFRM_USER is not set # CONFIG_XFRM_SUB_POLICY is not set # CONFIG_XFRM_MIGRATE is not set # CONFIG_XFRM_STATISTICS is not set # CONFIG_NET_KEY is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y # CONFIG_IP_ADVANCED_ROUTER is not set CONFIG_IP_FIB_HASH=y # CONFIG_IP_PNP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_IP_MROUTE is not set CONFIG_ARPD=y CONFIG_SYN_COOKIES=y # CONFIG_INET_AH is not set # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set # CONFIG_INET_XFRM_TUNNEL is not set # CONFIG_INET_TUNNEL is not set CONFIG_INET_XFRM_MODE_TRANSPORT=y CONFIG_INET_XFRM_MODE_TUNNEL=y CONFIG_INET_XFRM_MODE_BEET=y # CONFIG_INET_LRO is not set CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set # CONFIG_IPV6 is not set # CONFIG_NETWORK_SECMARK is not set # CONFIG_NETFILTER is not set # CONFIG_IP_DCCP is not set # CONFIG_IP_SCTP is not set # CONFIG_TIPC is not set # CONFIG_ATM is not set # CONFIG_BRIDGE is not set # CONFIG_NET_DSA is not set # CONFIG_VLAN_8021Q is not set # CONFIG_DECNET is not set # CONFIG_LLC2 is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set # CONFIG_NET_SCHED is not set # CONFIG_DCB is not set # # Network testing # # CONFIG_NET_PKTGEN is not set # CONFIG_NET_TCPPROBE is not set # CONFIG_HAMRADIO is not set # CONFIG_CAN is not set # CONFIG_IRDA is not set # CONFIG_BT is not set # CONFIG_AF_RXRPC is not set # CONFIG_PHONET is not set CONFIG_WIRELESS=y # CONFIG_CFG80211 is not set # CONFIG_WIRELESS_OLD_REGULATORY is not set # CONFIG_WIRELESS_EXT is not set # CONFIG_LIB80211 is not set # CONFIG_MAC80211 is not set # CONFIG_WIMAX is not set # CONFIG_RFKILL is not set # CONFIG_NET_9P is not set # # Device Drivers # # # Generic Driver Options # CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set CONFIG_CONNECTOR=m # CONFIG_MTD is not set # CONFIG_PARPORT is not set CONFIG_PNP=y CONFIG_PNP_DEBUG_MESSAGES=y # # Protocols # CONFIG_PNPACPI=y CONFIG_BLK_DEV=y # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set # CONFIG_BLK_DEV_UMEM is not set # CONFIG_BLK_DEV_COW_COMMON is not set CONFIG_BLK_DEV_LOOP=m CONFIG_BLK_DEV_CRYPTOLOOP=m CONFIG_BLK_DEV_NBD=m # CONFIG_BLK_DEV_SX8 is not set # CONFIG_BLK_DEV_UB is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=4096 # CONFIG_BLK_DEV_XIP is not set # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set # CONFIG_BLK_DEV_HD is not set CONFIG_MISC_DEVICES=y # CONFIG_PHANTOM is not set CONFIG_SGI_IOC4=y # CONFIG_TIFM_CORE is not set # CONFIG_ENCLOSURE_SERVICES is not set # CONFIG_SGI_XP is not set # CONFIG_HP_ILO is not set # CONFIG_SGI_GRU is not set # CONFIG_C2PORT is not set # # EEPROM support # # CONFIG_EEPROM_93CX6 is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set # # SCSI device support # # CONFIG_RAID_ATTRS is not set CONFIG_SCSI=y CONFIG_SCSI_DMA=y # CONFIG_SCSI_TGT is not set CONFIG_SCSI_NETLINK=y CONFIG_SCSI_PROC_FS=y # # SCSI support type (disk, tape, CD-ROM) # CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m # CONFIG_CHR_DEV_OSST is not set CONFIG_BLK_DEV_SR=m # CONFIG_BLK_DEV_SR_VENDOR is not set CONFIG_CHR_DEV_SG=m # CONFIG_CHR_DEV_SCH is not set # # Some SCSI devices (e.g. CD jukebox) support multiple LUNs # # CONFIG_SCSI_MULTI_LUN is not set # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set # CONFIG_SCSI_SCAN_ASYNC is not set CONFIG_SCSI_WAIT_SCAN=m # # SCSI Transports # CONFIG_SCSI_SPI_ATTRS=y CONFIG_SCSI_FC_ATTRS=y # CONFIG_SCSI_ISCSI_ATTRS is not set CONFIG_SCSI_SAS_ATTRS=m # CONFIG_SCSI_SAS_LIBSAS is not set # CONFIG_SCSI_SRP_ATTRS is not set CONFIG_SCSI_LOWLEVEL=y # CONFIG_ISCSI_TCP is not set # CONFIG_SCSI_CXGB3_ISCSI is not set # CONFIG_BLK_DEV_3W_XXXX_RAID is not set # CONFIG_SCSI_3W_9XXX is not set # CONFIG_SCSI_ACARD is not set # CONFIG_SCSI_AACRAID is not set # CONFIG_SCSI_AIC7XXX is not set # CONFIG_SCSI_AIC7XXX_OLD is not set # CONFIG_SCSI_AIC79XX is not set # CONFIG_SCSI_AIC94XX is not set # CONFIG_SCSI_DPT_I2O is not set # CONFIG_SCSI_ADVANSYS is not set # CONFIG_SCSI_ARCMSR is not set # CONFIG_MEGARAID_NEWGEN is not set # CONFIG_MEGARAID_LEGACY is not set # CONFIG_MEGARAID_SAS is not set # CONFIG_SCSI_HPTIOP is not set # CONFIG_LIBFC is not set # CONFIG_FCOE is not set # CONFIG_SCSI_DMX3191D is not set # CONFIG_SCSI_FUTURE_DOMAIN is not set # CONFIG_SCSI_IPS is not set # CONFIG_SCSI_INITIO is not set # CONFIG_SCSI_INIA100 is not set # CONFIG_SCSI_MVSAS is not set # CONFIG_SCSI_STEX is not set CONFIG_SCSI_SYM53C8XX_2=y CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 CONFIG_SCSI_SYM53C8XX_MMIO=y CONFIG_SCSI_QLOGIC_1280=y # CONFIG_SCSI_QLA_FC is not set # CONFIG_SCSI_QLA_ISCSI is not set CONFIG_SCSI_LPFC=m # CONFIG_SCSI_LPFC_DEBUG_FS is not set # CONFIG_SCSI_DC395x is not set # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_SRP is not set CONFIG_SCSI_DH=m # CONFIG_SCSI_DH_RDAC is not set # CONFIG_SCSI_DH_HP_SW is not set # CONFIG_SCSI_DH_EMC is not set # CONFIG_SCSI_DH_ALUA is not set # CONFIG_ATA is not set CONFIG_MD=y CONFIG_BLK_DEV_MD=y CONFIG_MD_AUTODETECT=y CONFIG_MD_LINEAR=y CONFIG_MD_RAID0=y CONFIG_MD_RAID1=y CONFIG_MD_RAID10=y CONFIG_MD_RAID456=y CONFIG_MD_RAID5_RESHAPE=y CONFIG_MD_MULTIPATH=y # CONFIG_MD_FAULTY is not set CONFIG_BLK_DEV_DM=m # CONFIG_DM_DEBUG is not set CONFIG_DM_CRYPT=m CONFIG_DM_SNAPSHOT=m CONFIG_DM_MIRROR=m CONFIG_DM_ZERO=m CONFIG_DM_MULTIPATH=m # CONFIG_DM_DELAY is not set # CONFIG_DM_UEVENT is not set CONFIG_FUSION=y CONFIG_FUSION_SPI=m CONFIG_FUSION_FC=m CONFIG_FUSION_SAS=m CONFIG_FUSION_MAX_SGE=128 CONFIG_FUSION_CTL=m # CONFIG_FUSION_LOGGING is not set # # IEEE 1394 (FireWire) support # # # Enable only one of the two stacks, unless you know what you are doing # # CONFIG_FIREWIRE is not set # CONFIG_IEEE1394 is not set # CONFIG_I2O is not set CONFIG_NETDEVICES=y CONFIG_DUMMY=m # CONFIG_BONDING is not set # CONFIG_MACVLAN is not set # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set # CONFIG_VETH is not set # CONFIG_NET_SB1000 is not set # CONFIG_ARCNET is not set CONFIG_PHYLIB=y # # MII PHY device drivers # # CONFIG_MARVELL_PHY is not set # CONFIG_DAVICOM_PHY is not set # CONFIG_QSEMI_PHY is not set # CONFIG_LXT_PHY is not set # CONFIG_CICADA_PHY is not set # CONFIG_VITESSE_PHY is not set # CONFIG_SMSC_PHY is not set # CONFIG_BROADCOM_PHY is not set # CONFIG_ICPLUS_PHY is not set # CONFIG_REALTEK_PHY is not set # CONFIG_NATIONAL_PHY is not set # CONFIG_STE10XP is not set # CONFIG_LSI_ET1011C_PHY is not set # CONFIG_FIXED_PHY is not set # CONFIG_MDIO_BITBANG is not set CONFIG_NET_ETHERNET=y CONFIG_MII=m # CONFIG_HAPPYMEAL is not set # CONFIG_SUNGEM is not set # CONFIG_CASSINI is not set # CONFIG_NET_VENDOR_3COM is not set CONFIG_NET_TULIP=y # CONFIG_DE2104X is not set CONFIG_TULIP=m # CONFIG_TULIP_MWI is not set # CONFIG_TULIP_MMIO is not set # CONFIG_TULIP_NAPI is not set # CONFIG_DE4X5 is not set # CONFIG_WINBOND_840 is not set # CONFIG_DM9102 is not set # CONFIG_ULI526X is not set # CONFIG_HP100 is not set # CONFIG_IBM_NEW_EMAC_ZMII is not set # CONFIG_IBM_NEW_EMAC_RGMII is not set # CONFIG_IBM_NEW_EMAC_TAH is not set # CONFIG_IBM_NEW_EMAC_EMAC4 is not set # CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set # CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set CONFIG_NET_PCI=y # CONFIG_PCNET32 is not set # CONFIG_AMD8111_ETH is not set # CONFIG_ADAPTEC_STARFIRE is not set # CONFIG_B44 is not set # CONFIG_FORCEDETH is not set CONFIG_E100=m # CONFIG_FEALNX is not set # CONFIG_NATSEMI is not set # CONFIG_NE2K_PCI is not set # CONFIG_8139CP is not set # CONFIG_8139TOO is not set # CONFIG_R6040 is not set # CONFIG_SIS900 is not set # CONFIG_EPIC100 is not set # CONFIG_SMSC9420 is not set # CONFIG_SUNDANCE is not set # CONFIG_TLAN is not set # CONFIG_VIA_RHINE is not set # CONFIG_SC92031 is not set # CONFIG_ATL2 is not set CONFIG_NETDEV_1000=y # CONFIG_ACENIC is not set # CONFIG_DL2K is not set CONFIG_E1000=y CONFIG_E1000E=y # CONFIG_IP1000 is not set # CONFIG_IGB is not set # CONFIG_NS83820 is not set # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set # CONFIG_R8169 is not set # CONFIG_SIS190 is not set # CONFIG_SKGE is not set # CONFIG_SKY2 is not set # CONFIG_VIA_VELOCITY is not set CONFIG_TIGON3=y # CONFIG_BNX2 is not set # CONFIG_QLA3XXX is not set # CONFIG_ATL1 is not set # CONFIG_ATL1E is not set # CONFIG_JME is not set CONFIG_NETDEV_10000=y # CONFIG_CHELSIO_T1 is not set CONFIG_CHELSIO_T3_DEPENDS=y # CONFIG_CHELSIO_T3 is not set # CONFIG_ENIC is not set # CONFIG_IXGBE is not set # CONFIG_IXGB is not set # CONFIG_S2IO is not set # CONFIG_MYRI10GE is not set # CONFIG_NETXEN_NIC is not set # CONFIG_NIU is not set # CONFIG_MLX4_EN is not set # CONFIG_MLX4_CORE is not set # CONFIG_TEHUTI is not set # CONFIG_BNX2X is not set # CONFIG_QLGE is not set # CONFIG_SFC is not set # CONFIG_TR is not set # # Wireless LAN # # CONFIG_WLAN_PRE80211 is not set # CONFIG_WLAN_80211 is not set # CONFIG_IWLWIFI_LEDS is not set # # Enable WiMAX (Networking options) to see the WiMAX drivers # # # USB Network Adapters # # CONFIG_USB_CATC is not set # CONFIG_USB_KAWETH is not set # CONFIG_USB_PEGASUS is not set # CONFIG_USB_RTL8150 is not set # CONFIG_USB_USBNET is not set # CONFIG_WAN is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set # CONFIG_PPP is not set # CONFIG_SLIP is not set # CONFIG_NET_FC is not set CONFIG_NETCONSOLE=y # CONFIG_NETCONSOLE_DYNAMIC is not set CONFIG_NETPOLL=y # CONFIG_NETPOLL_TRAP is not set CONFIG_NET_POLL_CONTROLLER=y # CONFIG_ISDN is not set # CONFIG_PHONE is not set # # Input device support # CONFIG_INPUT=y CONFIG_INPUT_FF_MEMLESS=m # CONFIG_INPUT_POLLDEV is not set # # Userland interfaces # CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV_PSAUX=y CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 # CONFIG_INPUT_JOYDEV is not set # CONFIG_INPUT_EVDEV is not set # CONFIG_INPUT_EVBUG is not set # # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_STOWAWAY is not set CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y CONFIG_MOUSE_PS2_ALPS=y CONFIG_MOUSE_PS2_LOGIPS2PP=y CONFIG_MOUSE_PS2_SYNAPTICS=y CONFIG_MOUSE_PS2_LIFEBOOK=y CONFIG_MOUSE_PS2_TRACKPOINT=y # CONFIG_MOUSE_PS2_ELANTECH is not set # CONFIG_MOUSE_PS2_TOUCHKIT is not set # CONFIG_MOUSE_SERIAL is not set # CONFIG_MOUSE_APPLETOUCH is not set # CONFIG_MOUSE_BCM5974 is not set # CONFIG_MOUSE_VSXXXAA is not set # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TABLET is not set # CONFIG_INPUT_TOUCHSCREEN is not set # CONFIG_INPUT_MISC is not set # # Hardware I/O ports # CONFIG_SERIO=y CONFIG_SERIO_I8042=y # CONFIG_SERIO_SERPORT is not set # CONFIG_SERIO_PCIPS2 is not set CONFIG_SERIO_LIBPS2=y # CONFIG_SERIO_RAW is not set CONFIG_GAMEPORT=m # CONFIG_GAMEPORT_NS558 is not set # CONFIG_GAMEPORT_L4 is not set # CONFIG_GAMEPORT_EMU10K1 is not set # CONFIG_GAMEPORT_FM801 is not set # # Character devices # CONFIG_VT=y CONFIG_CONSOLE_TRANSLATIONS=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y # CONFIG_VT_HW_CONSOLE_BINDING is not set CONFIG_DEVKMEM=y CONFIG_SERIAL_NONSTANDARD=y # CONFIG_COMPUTONE is not set # CONFIG_ROCKETPORT is not set # CONFIG_CYCLADES is not set # CONFIG_DIGIEPCA is not set # CONFIG_MOXA_INTELLIO is not set # CONFIG_MOXA_SMARTIO is not set # CONFIG_ISI is not set # CONFIG_SYNCLINKMP is not set # CONFIG_SYNCLINK_GT is not set # CONFIG_N_HDLC is not set # CONFIG_RISCOM8 is not set # CONFIG_SPECIALIX is not set # CONFIG_SX is not set # CONFIG_RIO is not set # CONFIG_STALDRV is not set # CONFIG_NOZOMI is not set CONFIG_SGI_SNSC=y CONFIG_SGI_TIOCX=y CONFIG_SGI_MBCS=m # # Serial drivers # CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_PCI=y CONFIG_SERIAL_8250_PNP=y CONFIG_SERIAL_8250_NR_UARTS=6 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_SHARE_IRQ=y # CONFIG_SERIAL_8250_DETECT_IRQ is not set # CONFIG_SERIAL_8250_RSA is not set # # Non-8250 serial port support # CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_SGI_L1_CONSOLE=y # CONFIG_SERIAL_JSM is not set CONFIG_SERIAL_SGI_IOC4=y # CONFIG_SERIAL_SGI_IOC3 is not set CONFIG_UNIX98_PTYS=y # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=256 CONFIG_IPMI_HANDLER=m CONFIG_IPMI_PANIC_EVENT=y # CONFIG_IPMI_PANIC_STRING is not set CONFIG_IPMI_DEVICE_INTERFACE=m CONFIG_IPMI_SI=m CONFIG_IPMI_WATCHDOG=m CONFIG_IPMI_POWEROFF=m # CONFIG_HW_RANDOM is not set CONFIG_EFI_RTC=y # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set CONFIG_RAW_DRIVER=m CONFIG_MAX_RAW_DEVS=256 CONFIG_HPET=y CONFIG_HPET_MMAP=y # CONFIG_HANGCHECK_TIMER is not set CONFIG_MMTIMER=y # CONFIG_TCG_TPM is not set CONFIG_DEVPORT=y # CONFIG_I2C is not set # CONFIG_SPI is not set # CONFIG_W1 is not set CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set # CONFIG_PDA_POWER is not set # CONFIG_BATTERY_DS2760 is not set CONFIG_HWMON=y # CONFIG_HWMON_VID is not set # CONFIG_SENSORS_I5K_AMB is not set # CONFIG_SENSORS_F71805F is not set # CONFIG_SENSORS_F71882FG is not set # CONFIG_SENSORS_IBMAEM is not set # CONFIG_SENSORS_IBMPEX is not set # CONFIG_SENSORS_IT87 is not set # CONFIG_SENSORS_PC87360 is not set # CONFIG_SENSORS_PC87427 is not set # CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_SMSC47M1 is not set # CONFIG_SENSORS_SMSC47B397 is not set # CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_VT1211 is not set # CONFIG_SENSORS_VT8231 is not set # CONFIG_SENSORS_W83627HF is not set # CONFIG_SENSORS_W83627EHF is not set # CONFIG_SENSORS_LIS3LV02D is not set # CONFIG_HWMON_DEBUG_CHIP is not set CONFIG_THERMAL=y # CONFIG_THERMAL_HWMON is not set # CONFIG_WATCHDOG is not set CONFIG_SSB_POSSIBLE=y # # Sonics Silicon Backplane # # CONFIG_SSB is not set # # Multifunction device drivers # # CONFIG_MFD_CORE is not set # CONFIG_MFD_SM501 is not set # CONFIG_HTC_PASIC3 is not set # CONFIG_MFD_TMIO is not set # CONFIG_REGULATOR is not set # # Multimedia devices # # # Multimedia core support # # CONFIG_VIDEO_DEV is not set # CONFIG_DVB_CORE is not set # CONFIG_VIDEO_MEDIA is not set # # Multimedia drivers # # CONFIG_DAB is not set # # Graphics support # # CONFIG_AGP is not set # CONFIG_DRM is not set # CONFIG_VGASTATE is not set # CONFIG_VIDEO_OUTPUT_CONTROL is not set # CONFIG_FB is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # # Display device support # # CONFIG_DISPLAY_SUPPORT is not set # # Console display driver support # CONFIG_VGA_CONSOLE=y # CONFIG_VGACON_SOFT_SCROLLBACK is not set CONFIG_DUMMY_CONSOLE=y # CONFIG_SOUND is not set CONFIG_HID_SUPPORT=y CONFIG_HID=y # CONFIG_HID_DEBUG is not set # CONFIG_HIDRAW is not set # # USB Input Devices # CONFIG_USB_HID=m # CONFIG_HID_PID is not set # CONFIG_USB_HIDDEV is not set # # Special HID drivers # CONFIG_HID_COMPAT=y CONFIG_HID_A4TECH=m CONFIG_HID_APPLE=m CONFIG_HID_BELKIN=m CONFIG_HID_CHERRY=m CONFIG_HID_CHICONY=m CONFIG_HID_CYPRESS=m CONFIG_HID_EZKEY=m CONFIG_HID_GYRATION=m CONFIG_HID_LOGITECH=m # CONFIG_LOGITECH_FF is not set # CONFIG_LOGIRUMBLEPAD2_FF is not set CONFIG_HID_MICROSOFT=m CONFIG_HID_MONTEREY=m CONFIG_HID_NTRIG=m CONFIG_HID_PANTHERLORD=m # CONFIG_PANTHERLORD_FF is not set CONFIG_HID_PETALYNX=m CONFIG_HID_SAMSUNG=m CONFIG_HID_SONY=m CONFIG_HID_SUNPLUS=m # CONFIG_GREENASIA_FF is not set CONFIG_HID_TOPSEED=m CONFIG_THRUSTMASTER_FF=m CONFIG_ZEROPLUS_FF=m CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y CONFIG_USB=m # CONFIG_USB_DEBUG is not set # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set # # Miscellaneous USB options # CONFIG_USB_DEVICEFS=y # CONFIG_USB_DEVICE_CLASS is not set # CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_SUSPEND is not set # CONFIG_USB_OTG is not set CONFIG_USB_MON=m # CONFIG_USB_WUSB is not set # CONFIG_USB_WUSB_CBAF is not set # # USB Host Controller Drivers # # CONFIG_USB_C67X00_HCD is not set CONFIG_USB_EHCI_HCD=m # CONFIG_USB_EHCI_ROOT_HUB_TT is not set # CONFIG_USB_EHCI_TT_NEWSCHED is not set # CONFIG_USB_OXU210HP_HCD is not set # CONFIG_USB_ISP116X_HCD is not set # CONFIG_USB_ISP1760_HCD is not set CONFIG_USB_OHCI_HCD=m # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_UHCI_HCD=m # CONFIG_USB_SL811_HCD is not set # CONFIG_USB_R8A66597_HCD is not set # CONFIG_USB_WHCI_HCD is not set # CONFIG_USB_HWA_HCD is not set # # Enable Host or Gadget support to see Inventra options # # # USB Device Class drivers # # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set # CONFIG_USB_WDM is not set # CONFIG_USB_TMC is not set # # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; # # # see USB_STORAGE Help for more information # CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_DEBUG is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set # CONFIG_USB_STORAGE_USBAT is not set # CONFIG_USB_STORAGE_SDDR09 is not set # CONFIG_USB_STORAGE_SDDR55 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_STORAGE_ALAUDA is not set # CONFIG_USB_STORAGE_ONETOUCH is not set # CONFIG_USB_STORAGE_KARMA is not set # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set # CONFIG_USB_LIBUSUAL is not set # # USB Imaging devices # # CONFIG_USB_MDC800 is not set # CONFIG_USB_MICROTEK is not set # # USB port drivers # # CONFIG_USB_SERIAL is not set # # USB Miscellaneous drivers # # CONFIG_USB_EMI62 is not set # CONFIG_USB_EMI26 is not set # CONFIG_USB_ADUTUX is not set # CONFIG_USB_SEVSEG is not set # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set # CONFIG_USB_BERRY_CHARGE is not set # CONFIG_USB_LED is not set # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set # CONFIG_USB_PHIDGET is not set # CONFIG_USB_IDMOUSE is not set # CONFIG_USB_FTDI_ELAN is not set # CONFIG_USB_APPLEDISPLAY is not set # CONFIG_USB_SISUSBVGA is not set # CONFIG_USB_LD is not set # CONFIG_USB_TRANCEVIBRATOR is not set # CONFIG_USB_IOWARRIOR is not set # CONFIG_USB_TEST is not set # CONFIG_USB_ISIGHTFW is not set # CONFIG_USB_VST is not set # CONFIG_USB_GADGET is not set # # OTG and related infrastructure # # CONFIG_UWB is not set # CONFIG_MMC is not set # CONFIG_MEMSTICK is not set # CONFIG_NEW_LEDS is not set # CONFIG_ACCESSIBILITY is not set # CONFIG_INFINIBAND is not set # CONFIG_RTC_CLASS is not set # CONFIG_DMADEVICES is not set # CONFIG_UIO is not set # CONFIG_STAGING is not set # # HP Simulator drivers # # CONFIG_HP_SIMETH is not set # CONFIG_HP_SIMSERIAL is not set # CONFIG_HP_SIMSCSI is not set # CONFIG_MSPEC is not set # # File systems # CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_POSIX_ACL=y CONFIG_EXT2_FS_SECURITY=y # CONFIG_EXT2_FS_XIP is not set CONFIG_EXT3_FS=y CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y # CONFIG_EXT4_FS is not set CONFIG_JBD=y # CONFIG_JBD_DEBUG is not set CONFIG_FS_MBCACHE=y # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set CONFIG_FS_POSIX_ACL=y CONFIG_FILE_LOCKING=y # CONFIG_XFS_FS is not set # CONFIG_GFS2_FS is not set # CONFIG_OCFS2_FS is not set # CONFIG_BTRFS_FS is not set CONFIG_DNOTIFY=y CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_QUOTA is not set # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set # CONFIG_FUSE_FS is not set CONFIG_GENERIC_ACL=y # # CD-ROM/DVD Filesystems # # CONFIG_ISO9660_FS is not set # CONFIG_UDF_FS is not set # # DOS/FAT/NT Filesystems # CONFIG_FAT_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_NTFS_FS is not set # # Pseudo filesystems # CONFIG_PROC_FS=y CONFIG_PROC_KCORE=y CONFIG_PROC_VMCORE=y CONFIG_PROC_SYSCTL=y CONFIG_PROC_PAGE_MONITOR=y CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y CONFIG_CONFIGFS_FS=m CONFIG_MISC_FILESYSTEMS=y # CONFIG_ADFS_FS is not set # CONFIG_AFFS_FS is not set # CONFIG_HFS_FS is not set # CONFIG_HFSPLUS_FS is not set # CONFIG_BEFS_FS is not set # CONFIG_BFS_FS is not set # CONFIG_EFS_FS is not set # CONFIG_CRAMFS is not set # CONFIG_SQUASHFS is not set # CONFIG_VXFS_FS is not set # CONFIG_MINIX_FS is not set # CONFIG_OMFS_FS is not set # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_ROMFS_FS is not set # CONFIG_SYSV_FS is not set # CONFIG_UFS_FS is not set # CONFIG_NETWORK_FILESYSTEMS is not set # # Partition Types # CONFIG_PARTITION_ADVANCED=y # CONFIG_ACORN_PARTITION is not set # CONFIG_OSF_PARTITION is not set # CONFIG_AMIGA_PARTITION is not set # CONFIG_ATARI_PARTITION is not set # CONFIG_MAC_PARTITION is not set CONFIG_MSDOS_PARTITION=y # CONFIG_BSD_DISKLABEL is not set # CONFIG_MINIX_SUBPARTITION is not set # CONFIG_SOLARIS_X86_PARTITION is not set # CONFIG_UNIXWARE_DISKLABEL is not set # CONFIG_LDM_PARTITION is not set CONFIG_SGI_PARTITION=y # CONFIG_ULTRIX_PARTITION is not set # CONFIG_SUN_PARTITION is not set # CONFIG_KARMA_PARTITION is not set CONFIG_EFI_PARTITION=y # CONFIG_SYSV68_PARTITION is not set CONFIG_NLS=y CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=m # CONFIG_NLS_CODEPAGE_737 is not set # CONFIG_NLS_CODEPAGE_775 is not set # CONFIG_NLS_CODEPAGE_850 is not set # CONFIG_NLS_CODEPAGE_852 is not set # CONFIG_NLS_CODEPAGE_855 is not set # CONFIG_NLS_CODEPAGE_857 is not set # CONFIG_NLS_CODEPAGE_860 is not set # CONFIG_NLS_CODEPAGE_861 is not set # CONFIG_NLS_CODEPAGE_862 is not set # CONFIG_NLS_CODEPAGE_863 is not set # CONFIG_NLS_CODEPAGE_864 is not set # CONFIG_NLS_CODEPAGE_865 is not set # CONFIG_NLS_CODEPAGE_866 is not set # CONFIG_NLS_CODEPAGE_869 is not set # CONFIG_NLS_CODEPAGE_936 is not set # CONFIG_NLS_CODEPAGE_950 is not set CONFIG_NLS_CODEPAGE_932=m # CONFIG_NLS_CODEPAGE_949 is not set # CONFIG_NLS_CODEPAGE_874 is not set # CONFIG_NLS_ISO8859_8 is not set # CONFIG_NLS_CODEPAGE_1250 is not set # CONFIG_NLS_CODEPAGE_1251 is not set # CONFIG_NLS_ASCII is not set CONFIG_NLS_ISO8859_1=m # CONFIG_NLS_ISO8859_2 is not set # CONFIG_NLS_ISO8859_3 is not set # CONFIG_NLS_ISO8859_4 is not set # CONFIG_NLS_ISO8859_5 is not set # CONFIG_NLS_ISO8859_6 is not set # CONFIG_NLS_ISO8859_7 is not set # CONFIG_NLS_ISO8859_9 is not set # CONFIG_NLS_ISO8859_13 is not set # CONFIG_NLS_ISO8859_14 is not set # CONFIG_NLS_ISO8859_15 is not set # CONFIG_NLS_KOI8_R is not set # CONFIG_NLS_KOI8_U is not set CONFIG_NLS_UTF8=m # CONFIG_DLM is not set # # Kernel hacking # # CONFIG_PRINTK_TIME is not set CONFIG_ENABLE_WARN_DEPRECATED=y CONFIG_ENABLE_MUST_CHECK=y CONFIG_FRAME_WARN=2048 CONFIG_MAGIC_SYSRQ=y # CONFIG_UNUSED_SYMBOLS is not set CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_SHIRQ is not set # CONFIG_DETECT_SOFTLOCKUP is not set # CONFIG_SCHED_DEBUG is not set # CONFIG_SCHEDSTATS is not set # CONFIG_TIMER_STATS is not set # CONFIG_DEBUG_OBJECTS is not set CONFIG_SLUB_DEBUG_ON=y CONFIG_SLUB_STATS=y CONFIG_DEBUG_RT_MUTEXES=y CONFIG_DEBUG_PI_LIST=y # CONFIG_RT_MUTEX_TESTER is not set CONFIG_DEBUG_SPINLOCK=y CONFIG_DEBUG_MUTEXES=y CONFIG_DEBUG_SPINLOCK_SLEEP=y # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set CONFIG_DEBUG_KOBJECT=y CONFIG_DEBUG_INFO=y CONFIG_DEBUG_VM=y # CONFIG_DEBUG_WRITECOUNT is not set CONFIG_DEBUG_MEMORY_INIT=y # CONFIG_DEBUG_LIST is not set # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_NOTIFIERS is not set # CONFIG_BOOT_PRINTK_DELAY is not set # CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_CPU_STALL_DETECTOR is not set # CONFIG_KPROBES_SANITY_TEST is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_LKDTM is not set # CONFIG_FAULT_INJECTION is not set CONFIG_SYSCTL_SYSCALL_CHECK=y CONFIG_NOP_TRACER=y CONFIG_RING_BUFFER=y CONFIG_TRACING=y # # Tracers # # CONFIG_SCHED_TRACER is not set CONFIG_CONTEXT_SWITCH_TRACER=y # CONFIG_BOOT_TRACER is not set # CONFIG_TRACE_BRANCH_PROFILING is not set # CONFIG_FTRACE_STARTUP_TEST is not set # CONFIG_DYNAMIC_PRINTK_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_IA64_GRANULE_16MB=y # CONFIG_IA64_GRANULE_64MB is not set # CONFIG_IA64_PRINT_HAZARDS is not set # CONFIG_DISABLE_VHPT is not set # CONFIG_IA64_DEBUG_CMPXCHG is not set # CONFIG_IA64_DEBUG_IRQ is not set CONFIG_SYSVIPC_COMPAT=y # # Security options # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set # CONFIG_SECURITYFS is not set # CONFIG_SECURITY_FILE_CAPABILITIES is not set CONFIG_XOR_BLOCKS=y CONFIG_ASYNC_CORE=y CONFIG_ASYNC_MEMCPY=y CONFIG_ASYNC_XOR=y CONFIG_CRYPTO=y # # Crypto core or helper # # CONFIG_CRYPTO_FIPS is not set CONFIG_CRYPTO_ALGAPI=y CONFIG_CRYPTO_ALGAPI2=y CONFIG_CRYPTO_AEAD2=y CONFIG_CRYPTO_BLKCIPHER=m CONFIG_CRYPTO_BLKCIPHER2=y CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH2=y CONFIG_CRYPTO_RNG2=y CONFIG_CRYPTO_MANAGER=m CONFIG_CRYPTO_MANAGER2=y # CONFIG_CRYPTO_GF128MUL is not set # CONFIG_CRYPTO_NULL is not set # CONFIG_CRYPTO_CRYPTD is not set # CONFIG_CRYPTO_AUTHENC is not set # CONFIG_CRYPTO_TEST is not set # # Authenticated Encryption with Associated Data # # CONFIG_CRYPTO_CCM is not set # CONFIG_CRYPTO_GCM is not set # CONFIG_CRYPTO_SEQIV is not set # # Block modes # CONFIG_CRYPTO_CBC=m # CONFIG_CRYPTO_CTR is not set # CONFIG_CRYPTO_CTS is not set CONFIG_CRYPTO_ECB=m # CONFIG_CRYPTO_LRW is not set CONFIG_CRYPTO_PCBC=m # CONFIG_CRYPTO_XTS is not set # # Hash modes # # CONFIG_CRYPTO_HMAC is not set # CONFIG_CRYPTO_XCBC is not set # # Digest # # CONFIG_CRYPTO_CRC32C is not set # CONFIG_CRYPTO_MD4 is not set CONFIG_CRYPTO_MD5=y # CONFIG_CRYPTO_MICHAEL_MIC is not set # CONFIG_CRYPTO_RMD128 is not set # CONFIG_CRYPTO_RMD160 is not set # CONFIG_CRYPTO_RMD256 is not set # CONFIG_CRYPTO_RMD320 is not set # CONFIG_CRYPTO_SHA1 is not set # CONFIG_CRYPTO_SHA256 is not set # CONFIG_CRYPTO_SHA512 is not set # CONFIG_CRYPTO_TGR192 is not set # CONFIG_CRYPTO_WP512 is not set # # Ciphers # # CONFIG_CRYPTO_AES is not set # CONFIG_CRYPTO_ANUBIS is not set # CONFIG_CRYPTO_ARC4 is not set # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_CAST5 is not set # CONFIG_CRYPTO_CAST6 is not set CONFIG_CRYPTO_DES=m # CONFIG_CRYPTO_FCRYPT is not set # CONFIG_CRYPTO_KHAZAD is not set # CONFIG_CRYPTO_SALSA20 is not set # CONFIG_CRYPTO_SEED is not set # CONFIG_CRYPTO_SERPENT is not set # CONFIG_CRYPTO_TEA is not set # CONFIG_CRYPTO_TWOFISH is not set # # Compression # # CONFIG_CRYPTO_DEFLATE is not set # CONFIG_CRYPTO_LZO is not set # # Random Number Generation # # CONFIG_CRYPTO_ANSI_CPRNG is not set CONFIG_CRYPTO_HW=y # CONFIG_CRYPTO_DEV_HIFN_795X is not set CONFIG_HAVE_KVM=y CONFIG_VIRTUALIZATION=y # CONFIG_KVM is not set # CONFIG_VIRTIO_PCI is not set # CONFIG_VIRTIO_BALLOON is not set # # Library routines # CONFIG_BITREVERSE=y CONFIG_GENERIC_FIND_LAST_BIT=y # CONFIG_CRC_CCITT is not set CONFIG_CRC16=y CONFIG_CRC_T10DIF=y # CONFIG_CRC_ITU_T is not set CONFIG_CRC32=y # CONFIG_CRC7 is not set # CONFIG_LIBCRC32C is not set CONFIG_PLIST=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=y CONFIG_IRQ_PER_CPU=y CONFIG_IOMMU_API=y ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-11 12:52 ` KOSAKI Motohiro @ 2009-02-11 13:09 ` David Howells 2009-02-11 14:04 ` KOSAKI Motohiro 2009-02-11 16:33 ` Ingo Molnar 0 siblings, 2 replies; 24+ messages in thread From: David Howells @ 2009-02-11 13:09 UTC (permalink / raw) To: KOSAKI Motohiro; +Cc: dhowells, Serge Hallyn, LKML, Lee Schermerhorn KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote: > > And can you give us your kernel config? > > attached. Can you see the attached patch? You'll need to turn on CONFIG_DEBUG_POISONED_PUT and you should keep CONFIG_DEBUG_SLAB on too. I haven't tried compiling it for IA64, so the header change I made for that may not compile. David --- From: David Howells <dhowells@redhat.com> Subject: [PATCH] Attempt to catch atomic_dec_and_test() on freed and poisoned slab memory Add an option to attempt to catch atomic_dec_and_test() on freed and poisoned slab memory by complaining if the counter LSB is the poison value. Signed-off-by: David Howells <dhowells@redhat.com> --- arch/ia64/include/asm/atomic.h | 7 ++++++- arch/x86/include/asm/atomic_32.h | 8 ++++++++ arch/x86/include/asm/atomic_64.h | 8 ++++++++ lib/Kconfig.debug | 10 ++++++++++ lib/Makefile | 1 + lib/debug_poisoned_put.c | 39 ++++++++++++++++++++++++++++++++++++++ lib/dec_and_lock.c | 3 +++ 7 files changed, 75 insertions(+), 1 deletions(-) create mode 100644 lib/debug_poisoned_put.c diff --git a/arch/ia64/include/asm/atomic.h b/arch/ia64/include/asm/atomic.h index d37292b..b11ed7a 100644 --- a/arch/ia64/include/asm/atomic.h +++ b/arch/ia64/include/asm/atomic.h @@ -193,8 +193,13 @@ atomic64_add_negative (__s64 i, atomic64_t *v) #define atomic64_dec_return(v) atomic64_sub_return(1, (v)) #define atomic64_inc_return(v) atomic64_add_return(1, (v)) +#ifdef CONFIG_DEBUG_POISONED_PUT +extern void check_atomic_dec_and_test(atomic_t *v); +#endif + #define atomic_sub_and_test(i,v) (atomic_sub_return((i), (v)) == 0) -#define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0) +#define atomic_dec_and_test(v) (check_atomic_dec_and_test(v), \ + atomic_sub_return(1, (v)) == 0) #define atomic_inc_and_test(v) (atomic_add_return(1, (v)) == 0) #define atomic64_sub_and_test(i,v) (atomic64_sub_return((i), (v)) == 0) #define atomic64_dec_and_test(v) (atomic64_sub_return(1, (v)) == 0) diff --git a/arch/x86/include/asm/atomic_32.h b/arch/x86/include/asm/atomic_32.h index 85b46fb..b0b1a7c 100644 --- a/arch/x86/include/asm/atomic_32.h +++ b/arch/x86/include/asm/atomic_32.h @@ -101,6 +101,10 @@ static inline void atomic_dec(atomic_t *v) : "+m" (v->counter)); } +#ifdef CONFIG_DEBUG_POISONED_PUT +extern void check_atomic_dec_and_test(atomic_t *v); +#endif + /** * atomic_dec_and_test - decrement and test * @v: pointer of type atomic_t @@ -113,6 +117,10 @@ static inline int atomic_dec_and_test(atomic_t *v) { unsigned char c; +#ifdef CONFIG_DEBUG_POISONED_PUT + check_atomic_dec_and_test(v); +#endif + asm volatile(LOCK_PREFIX "decl %0; sete %1" : "+m" (v->counter), "=qm" (c) : : "memory"); diff --git a/arch/x86/include/asm/atomic_64.h b/arch/x86/include/asm/atomic_64.h index 8c21731..6a7f228 100644 --- a/arch/x86/include/asm/atomic_64.h +++ b/arch/x86/include/asm/atomic_64.h @@ -102,6 +102,10 @@ static inline void atomic_dec(atomic_t *v) : "m" (v->counter)); } +#ifdef CONFIG_DEBUG_POISONED_PUT +extern void check_atomic_dec_and_test(atomic_t *v); +#endif + /** * atomic_dec_and_test - decrement and test * @v: pointer of type atomic_t @@ -114,6 +118,10 @@ static inline int atomic_dec_and_test(atomic_t *v) { unsigned char c; +#ifdef CONFIG_DEBUG_POISONED_PUT + check_atomic_dec_and_test(v); +#endif + asm volatile(LOCK_PREFIX "decl %0; sete %1" : "=m" (v->counter), "=qm" (c) : "m" (v->counter) : "memory"); diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 29044f5..bb5801b 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -221,6 +221,16 @@ config TIMER_STATS (it defaults to deactivated on bootup and will only be activated if some application like powertop activates it explicitly). +config DEBUG_POISONED_PUT + bool "Catch puts of already released memory" + depends on DEBUG_KERNEL + help + If you say Y here, atomic_dec_and_test() will complain if it sees + what might be a poisoned value from a released slab object or a + counter already reduced to nothing. Note that this test cannot say + for certain that the value is in error - the value on the counter + might be completely legitimate. + config DEBUG_OBJECTS bool "Debug object operations" depends on DEBUG_KERNEL diff --git a/lib/Makefile b/lib/Makefile index 32b0e64..c47cc74 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -44,6 +44,7 @@ obj-$(CONFIG_PLIST) += plist.o obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o obj-$(CONFIG_DEBUG_LIST) += list_debug.o obj-$(CONFIG_DEBUG_OBJECTS) += debugobjects.o +obj-$(CONFIG_DEBUG_POISONED_PUT) += debug_poisoned_put.o ifneq ($(CONFIG_HAVE_DEC_LOCK),y) lib-y += dec_and_lock.o diff --git a/lib/debug_poisoned_put.c b/lib/debug_poisoned_put.c new file mode 100644 index 0000000..1e04325 --- /dev/null +++ b/lib/debug_poisoned_put.c @@ -0,0 +1,39 @@ +/* Deal with a poisoned atomic counter + * + * Copyright (C) 2009 Red Hat, Inc. All Rights Reserved. + * Written by David Howells (dhowells@redhat.com) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public Licence + * as published by the Free Software Foundation; either version + * 2 of the Licence, or (at your option) any later version. + */ + +#include <linux/kernel.h> +#include <linux/poison.h> +#include <linux/module.h> +#include <asm/atomic.h> + +/* + * Check to see if an atomic_dec_and_test() is being performed on released + * and poisoned memory + */ +extern void check_atomic_dec_and_test(atomic_t *v) +{ + int c = v->counter; + + if (unlikely( +#ifdef CONFIG_DEBUG_SLAB + c == (POISON_FREE << 24 | + POISON_FREE << 16 | + POISON_FREE << 8 | + POISON_FREE) || +#endif + c <= 0)) { + printk(KERN_WARNING "atomic_dec_and_test() of suspicious value." + " insn=%p addr=%p val=%d\n", + __builtin_return_address(0), v, c); + dump_stack(); + } +} +EXPORT_SYMBOL(check_atomic_dec_and_test); diff --git a/lib/dec_and_lock.c b/lib/dec_and_lock.c index a65c314..403c857 100644 --- a/lib/dec_and_lock.c +++ b/lib/dec_and_lock.c @@ -20,6 +20,9 @@ int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock) { #ifdef CONFIG_SMP +#ifdef CONFIG_DEBUG_POISONED_PUT + check_atomic_dec_and_test(atomic); +#endif /* Subtract 1 from counter unless that drops it to 0 (ie. it was 1) */ if (atomic_add_unless(atomic, -1, 1)) return 0; ^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-11 13:09 ` David Howells @ 2009-02-11 14:04 ` KOSAKI Motohiro 2009-02-11 16:33 ` Ingo Molnar 1 sibling, 0 replies; 24+ messages in thread From: KOSAKI Motohiro @ 2009-02-11 14:04 UTC (permalink / raw) To: David Howells; +Cc: Serge Hallyn, LKML, Lee Schermerhorn Hi > > Can you see the attached patch? You'll need to turn on > CONFIG_DEBUG_POISONED_PUT and you should keep CONFIG_DEBUG_SLAB on too. > > I haven't tried compiling it for IA64, so the header change I made for that > may not compile. maybe I can. but I can't do today. it because now is midnight in japan ;) please wait until tomorrow. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-11 13:09 ` David Howells 2009-02-11 14:04 ` KOSAKI Motohiro @ 2009-02-11 16:33 ` Ingo Molnar 2009-02-11 17:07 ` David Howells 1 sibling, 1 reply; 24+ messages in thread From: Ingo Molnar @ 2009-02-11 16:33 UTC (permalink / raw) To: David Howells; +Cc: KOSAKI Motohiro, Serge Hallyn, LKML, Lee Schermerhorn btw: include/linux/cred.h: In function 'get_cred': include/linux/cred.h:188: warning: passing argument 1 of 'get_new_cred' discards qualifiers from pointer target type include/linux/cred.h: In function 'get_cred': include/linux/cred.h:188: warning: passing argument 1 of 'get_new_cred' discards qualifiers from pointer target type include/linux/cred.h: In function 'get_cred': include/linux/cred.h:188: warning: passing argument 1 of 'get_new_cred' discards qualifiers from pointer target type include/linux/cred.h: In function 'get_cred': include/linux/cred.h:188: warning: passing argument 1 of 'get_new_cred' discards qualifiers from pointer target type include/linux/cred.h: In function 'get_cred': include/linux/cred.h:188: warning: passing argument 1 of 'get_new_cred' discards qualifiers from pointer target type probably unrelated. Ingo ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-11 16:33 ` Ingo Molnar @ 2009-02-11 17:07 ` David Howells 2009-02-11 17:19 ` Ingo Molnar 0 siblings, 1 reply; 24+ messages in thread From: David Howells @ 2009-02-11 17:07 UTC (permalink / raw) To: Ingo Molnar Cc: dhowells, KOSAKI Motohiro, Serge Hallyn, LKML, Lee Schermerhorn Ingo Molnar <mingo@elte.hu> wrote: > include/linux/cred.h: In function 'get_cred': > include/linux/cred.h:188: warning: passing argument 1 of 'get_new_cred' discards > qualifiers from pointer target type This is a known compiler bug in some versions of gcc. It fails to observe the fact that a const pointer is cast to the equivalent non-const pointer in get_cred(): static inline const struct cred *get_cred(const struct cred *cred) { return get_new_cred((struct cred *) cred); } David ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-11 17:07 ` David Howells @ 2009-02-11 17:19 ` Ingo Molnar 0 siblings, 0 replies; 24+ messages in thread From: Ingo Molnar @ 2009-02-11 17:19 UTC (permalink / raw) To: David Howells; +Cc: KOSAKI Motohiro, Serge Hallyn, LKML, Lee Schermerhorn * David Howells <dhowells@redhat.com> wrote: > Ingo Molnar <mingo@elte.hu> wrote: > > > include/linux/cred.h: In function 'get_cred': > > include/linux/cred.h:188: warning: passing argument 1 of 'get_new_cred' discards > > qualifiers from pointer target type > > This is a known compiler bug in some versions of gcc. It fails to observe the > fact that a const pointer is cast to the equivalent non-const pointer in > get_cred(): > > static inline const struct cred *get_cred(const struct cred *cred) > { > return get_new_cred((struct cred *) cred); > } If by 'some versions of gcc' you mean 'gcc 4.2.2' then yes. And in any case it's a very annoying warning. Ingo ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-10 5:41 [CRED bug?] 2.6.29-rc3 don't survive on stress workload KOSAKI Motohiro ` (2 preceding siblings ...) 2009-02-11 12:41 ` David Howells @ 2009-02-12 11:09 ` David Howells 2009-02-12 11:23 ` KOSAKI Motohiro 3 siblings, 1 reply; 24+ messages in thread From: David Howells @ 2009-02-12 11:09 UTC (permalink / raw) To: KOSAKI Motohiro; +Cc: dhowells, Serge Hallyn, LKML, Lee Schermerhorn Aha! I reproduced it myself (with my patch to check atomic_dec_and_test() in there, but not Serge's patch). Ironically, 13 hours of running Vegard's setreuid() program didn't show anything, but halting the box whilst someone was trying to SSH-crack it did. Shutting down ntpd: ------------[ cut here ]------------ kernel BUG at mm/slab.c:591! invalid opcode: 0000 [#1] SMP last sysfs file: /sys/devices/pci0000:00/0000:00:19.0/irq CPU 1 Modules linked in: Pid: 0, comm: swapper Not tainted 2.6.29-rc4-cachefs #35 RIP: 0010:[<ffffffff8028c192>] [<ffffffff8028c192>] kfree+0x65/0xd1 RSP: 0018:ffff88003dc9fe50 EFLAGS: 00010046 RAX: 0000000000000000 RBX: ffffffff80625a00 RCX: 0000000000000059 RDX: ffffe20000015818 RSI: 0000000000000059 RDI: ffffffff80625a00 RBP: ffffffff8025d238 R08: 0000000000000000 R09: ffff88003cffc9c8 R10: ffff88003cd4e000 R11: 09f911029d74e35b R12: ffffffff80625a00 R13: 0000000000000286 R14: 0000000000000009 R15: 0000000000000008 FS: 0000000000000000(0000) GS:ffff88003dc64268(0000) knlGS:0000000000000000 CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b CR2: 00007f2bbb54f7f8 CR3: 000000003d2fe000 CR4: 00000000000006e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Process swapper (pid: 0, threadinfo ffff88003dc98000, task ffff88003dc95290) Stack: 09f911029d74e35b ffffffff80625a00 ffffffff8025d238 ffff88003cc82338 0000000000000202 ffffffff803820bd 0000000000000286 ffff88003d2fcec0 0000000000000286 ffffffff8023a488 ffff88003cc823b8 ffff88003cffc9c8 Call Trace: <IRQ> <0> [<ffffffff8025d238>] ? free_user_ns+0x0/0x19 [<ffffffff803820bd>] ? kref_put+0x51/0x5c [<ffffffff8023a488>] ? free_uid+0x4c/0x99 [<ffffffff80246cd1>] ? put_cred_rcu+0x70/0x83 [<ffffffff802691d9>] ? __rcu_process_callbacks+0x157/0x1d2 [<ffffffff8026927a>] ? rcu_process_callbacks+0x26/0x4b [<ffffffff802362e7>] ? __do_softirq+0x7a/0x13d [<ffffffff8020c2bc>] ? call_softirq+0x1c/0x28 [<ffffffff8020d7e4>] ? do_softirq+0x2c/0x6c [<ffffffff8021a893>] ? smp_apic_timer_interrupt+0x93/0xac [<ffffffff8020bcf3>] ? apic_timer_interrupt+0x13/0x20 <EOI> <0> [<ffffffff80447cce>] ? datagram_poll+0x0/0xc2 [<ffffffff802119d0>] ? mwait_idle+0x41/0x44 [<ffffffff8020a018>] ? cpu_idle+0x40/0x5e Code: 48 8d 14 10 48 8b 02 25 00 00 01 00 48 85 c0 74 15 48 8b 52 10 48 8b 02 25 00 00 01 00 48 85 c0 74 04 48 8b 52 10 80 3a 00 78 04 <0f> 0b eb fe 48 8b 5a 28 65 8b 04 25 24 00 00 00 89 c0 48 8b 2c RIP [<ffffffff8028c192>] kfree+0x65/0xd1 RSP <ffff88003dc9fe50> ---[ end trace 36e0423a3db60c4b ]--- Kernel panic - not syncing: Fatal exception in interrupt This is due to the BUG_ON() in the following: static inline struct kmem_cache *page_get_cache(struct page *page) { page = compound_head(page); BUG_ON(!PageSlab(page)); return (struct kmem_cache *)page->lru.next; } This is due to the user_namespace being released being init_user_ns. RDI and R12 both hold the parameter to kfree() at this point, and gdb says: (gdb) i sym 0xffffffff80625a00 init_user_ns in section .data David ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-12 11:09 ` David Howells @ 2009-02-12 11:23 ` KOSAKI Motohiro 2009-02-12 12:04 ` David Howells 0 siblings, 1 reply; 24+ messages in thread From: KOSAKI Motohiro @ 2009-02-12 11:23 UTC (permalink / raw) To: David Howells; +Cc: kosaki.motohiro, Serge Hallyn, LKML, Lee Schermerhorn Hi > Aha! I reproduced it myself (with my patch to check atomic_dec_and_test() in > there, but not Serge's patch). Ironically, 13 hours of running Vegard's > setreuid() program didn't show anything, but halting the box whilst someone > was trying to SSH-crack it did. Today's my testing, your patch + serge's patch kernel didn't reproduce the bug for 12 hour running. but perhaps I am merely lucky guy. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-12 11:23 ` KOSAKI Motohiro @ 2009-02-12 12:04 ` David Howells 2009-02-12 14:39 ` Serge E. Hallyn 0 siblings, 1 reply; 24+ messages in thread From: David Howells @ 2009-02-12 12:04 UTC (permalink / raw) To: KOSAKI Motohiro; +Cc: dhowells, Serge Hallyn, LKML, Lee Schermerhorn KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote: > but perhaps I am merely lucky guy. Or perhaps Serge's patch fixes it - as I said I don't have it applied - though I don't see exactly why it should fix this problem... David ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-12 12:04 ` David Howells @ 2009-02-12 14:39 ` Serge E. Hallyn 2009-02-12 17:18 ` David Howells 0 siblings, 1 reply; 24+ messages in thread From: Serge E. Hallyn @ 2009-02-12 14:39 UTC (permalink / raw) To: David Howells; +Cc: KOSAKI Motohiro, LKML, Lee Schermerhorn Quoting David Howells (dhowells@redhat.com): > KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote: > > > but perhaps I am merely lucky guy. > > Or perhaps Serge's patch fixes it - as I said I don't have it applied - though > I don't see exactly why it should fix this problem... I believe it was because 1. put_user_ns() was being called before the uid (which was in the init_user_ns) was unhashed 2. alloc_uid would race in before the unhash, find the hashed uid, and reuse it - without doing another get_user_ns(). so a reference was lost. -serge ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-12 14:39 ` Serge E. Hallyn @ 2009-02-12 17:18 ` David Howells 2009-02-13 4:44 ` KOSAKI Motohiro 2009-02-13 8:28 ` Ingo Molnar 0 siblings, 2 replies; 24+ messages in thread From: David Howells @ 2009-02-12 17:18 UTC (permalink / raw) To: Serge E. Hallyn; +Cc: dhowells, KOSAKI Motohiro, LKML, Lee Schermerhorn Serge E. Hallyn <serue@us.ibm.com> wrote: > 1. put_user_ns() was being called before the uid (which > was in the init_user_ns) was unhashed Ah yes... but only if CONFIG_USER_NS=y. Otherwise the unhash was being done before the release anyway. With this option set, the unhash was being deferred to a workqueue thread. Okay, that seems reasonable. David ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-12 17:18 ` David Howells @ 2009-02-13 4:44 ` KOSAKI Motohiro 2009-02-13 8:28 ` Ingo Molnar 1 sibling, 0 replies; 24+ messages in thread From: KOSAKI Motohiro @ 2009-02-13 4:44 UTC (permalink / raw) To: David Howells; +Cc: kosaki.motohiro, Serge E. Hallyn, LKML, Lee Schermerhorn Hi > > 1. put_user_ns() was being called before the uid (which > > was in the init_user_ns) was unhashed > > Ah yes... but only if CONFIG_USER_NS=y. Otherwise the unhash was being done > before the release anyway. With this option set, the unhash was being deferred > to a workqueue thread. > > Okay, that seems reasonable. Serge's patch servive on my stress workload for >24 hour. then, I think his patch have fixed this issue. thanks. ^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [CRED bug?] 2.6.29-rc3 don't survive on stress workload 2009-02-12 17:18 ` David Howells 2009-02-13 4:44 ` KOSAKI Motohiro @ 2009-02-13 8:28 ` Ingo Molnar 1 sibling, 0 replies; 24+ messages in thread From: Ingo Molnar @ 2009-02-13 8:28 UTC (permalink / raw) To: David Howells; +Cc: Serge E. Hallyn, KOSAKI Motohiro, LKML, Lee Schermerhorn * David Howells <dhowells@redhat.com> wrote: > Serge E. Hallyn <serue@us.ibm.com> wrote: > > > 1. put_user_ns() was being called before the uid (which > > was in the init_user_ns) was unhashed > > Ah yes... but only if CONFIG_USER_NS=y. Otherwise the unhash was being done > before the release anyway. With this option set, the unhash was being deferred > to a workqueue thread. > > Okay, that seems reasonable. Note Serge's fix also fixed a mystery hang/crash on a -tip testbox that has been broken since the merge window. Last night it produced a straight series of 550 bootups - previously it would crash/hang after 20-30 iterations. (i did not report it in this thread before because it's a new testbox with just a few weeks of track record and thus i could not exclude potential hardware trouble) So the bug is very much fixed. Tested-by: Ingo Molnar <mingo@elte.hu> Ingo ^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2009-02-13 8:28 UTC | newest] Thread overview: 24+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-02-10 5:41 [CRED bug?] 2.6.29-rc3 don't survive on stress workload KOSAKI Motohiro 2009-02-10 7:10 ` Vegard Nossum 2009-02-10 7:28 ` KOSAKI Motohiro 2009-02-11 3:56 ` Vegard Nossum 2009-02-11 10:48 ` David Howells 2009-02-10 12:18 ` Ingo Molnar 2009-02-11 12:25 ` KOSAKI Motohiro 2009-02-11 12:54 ` David Howells 2009-02-10 10:35 ` David Howells 2009-02-10 10:49 ` KOSAKI Motohiro 2009-02-11 12:41 ` David Howells 2009-02-11 12:52 ` KOSAKI Motohiro 2009-02-11 13:09 ` David Howells 2009-02-11 14:04 ` KOSAKI Motohiro 2009-02-11 16:33 ` Ingo Molnar 2009-02-11 17:07 ` David Howells 2009-02-11 17:19 ` Ingo Molnar 2009-02-12 11:09 ` David Howells 2009-02-12 11:23 ` KOSAKI Motohiro 2009-02-12 12:04 ` David Howells 2009-02-12 14:39 ` Serge E. Hallyn 2009-02-12 17:18 ` David Howells 2009-02-13 4:44 ` KOSAKI Motohiro 2009-02-13 8:28 ` Ingo Molnar
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox