All of lore.kernel.org
 help / color / mirror / Atom feed
* [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
                     ` (3 more replies)
  2009-02-10 10:35 ` David Howells
                   ` (2 subsequent siblings)
  3 siblings, 4 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-11 10:48     ` David Howells
  2009-02-10 12:18   ` Ingo Molnar
                     ` (2 subsequent siblings)
  3 siblings, 2 replies; 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  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  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
  3 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:28   ` KOSAKI Motohiro
@ 2009-02-11  3:56     ` Vegard Nossum
  2009-02-11 10:48     ` David Howells
  1 sibling, 0 replies; 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-10  7:28   ` KOSAKI Motohiro
  2009-02-11  3:56     ` Vegard Nossum
@ 2009-02-11 10:48     ` David Howells
  1 sibling, 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
  2009-02-11 12:54   ` David Howells
  3 siblings, 0 replies; 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-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-11 13:09   ` David Howells
  2009-02-12 11:09 ` David Howells
  3 siblings, 2 replies; 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
  1 sibling, 0 replies; 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-10  7:10 ` Vegard Nossum
                     ` (2 preceding siblings ...)
  2009-02-11 12:25   ` KOSAKI Motohiro
@ 2009-02-11 12:54   ` David Howells
  3 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-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
                       ` (2 more replies)
  1 sibling, 3 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
  2009-02-11 17:07     ` David Howells
  2 siblings, 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
  2 siblings, 0 replies; 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 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
  2 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
  2009-02-12 12:04   ` David Howells
  3 siblings, 2 replies; 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
  1 sibling, 0 replies; 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: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
  1 sibling, 2 replies; 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
  1 sibling, 0 replies; 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 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
  1 sibling, 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.