Slub debugging NAND error in 2.6.25.10.atmel.2

Haavard Skinnemoen haavard.skinnemoen at atmel.com
Fri Aug 29 05:48:28 EDT 2008


[adding linux-mtd and David back to Cc]

"Eirik Aanonsen" <eaa at wprmedical.com> wrote:
> > Using physmap partition information
> > Creating 5 MTD partitions on "physmap-flash.0":
> > 0x00000000-0x00020000 : "u-boot"
> > 0x00020000-0x00640000 : "root"
> > 0x00640000-0x00720000 : "kernel1"
> > 0x00720000-0x007e0000 : "modules"
> > 0x007e0000-0x00800000 : "env"
> > NAND device: Manufacturer ID: 0xec, Chip ID: 0xd5 (Samsung NAND 2GiB 3,3V 8-bit)
> > Scanning device for bad blocks
> > Bad eraseblock 31 at 0x00f80000
> > Bad eraseblock 1579 at 0x31580000
> > Bad eraseblock 2921 at 0x5b480000
> > Bad eraseblock 2931 at 0x5b980000
> > Bad eraseblock 3359 at 0x68f80000
> > Creating 1 MTD partitions on "atmel_nand":
> > 0x00000000-0x80000000 : "main"
> > =============================================================================
> > BUG kmalloc-4096: Poison overwritten
> > -----------------------------------------------------------------------------

Hmm...I just saw this when booting 2.6.27-rc5 on the NGW100:

physmap platform flash device: 00800000 at 00000000
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
 Amd/Fujitsu Extended Query Table at 0x0041
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
RedBoot partition parsing not available
Using physmap partition information
Creating 3 MTD partitions on "physmap-flash.0":
0x00000000-0x00020000 : "u-boot"
0x00020000-0x007f0000 : "root"
kobject (91ce8410): tried to init an initialized object, something is seriously wrong.
Call trace:
 [<90017184>] dump_stack+0x18/0x20
 [<900c1894>] kobject_init+0x28/0x5c
 [<900c1bf6>] kobject_init_and_add+0xe/0x24
 [<900beff0>] blk_register_filter+0x28/0x40
 [<900be224>] add_disk+0x38/0x68
 [<900e70f0>] add_mtd_blktrans_dev+0x174/0x184
 [<900e748e>] mtdblock_add_mtd+0x36/0x3c
 [<900e6e38>] blktrans_notify_add+0x1a/0x3a
 [<900e533c>] add_mtd_device+0x60/0xa0
 [<900e5f7e>] add_mtd_partitions+0x37a/0x3a0
 [<900ec4d0>] physmap_flash_probe+0x1ec/0x21c
 [<900e0f24>] platform_drv_probe+0x10/0x12
 [<900e06d0>] driver_probe_device+0x84/0xf0
 [<900e076a>] __driver_attach+0x2e/0x44
 [<900e0096>] bus_for_each_dev+0x2e/0x4c
 [<900e05b6>] driver_attach+0x12/0x14
 [<900e036c>] bus_add_driver+0x6c/0x178
 [<900e08a4>] driver_register+0x58/0xb0
 [<900e1126>] platform_driver_register+0x56/0x5c
 [<9000aaf6>] physmap_init+0xa/0x10
 [<9001422a>] do_one_initcall+0x2a/0x10c
 [<900005b8>] kernel_init+0x48/0x90
 [<9001fcc0>] do_exit+0x0/0x4cc

0x007f0000-0x00800000 : "env"
kobject (91ce8410): tried to init an initialized object, something is seriously wrong.
Call trace:
 [<90017184>] dump_stack+0x18/0x20
 [<900c1894>] kobject_init+0x28/0x5c
 [<900c1bf6>] kobject_init_and_add+0xe/0x24
 [<900beff0>] blk_register_filter+0x28/0x40
 [<900be224>] add_disk+0x38/0x68
 [<900e70f0>] add_mtd_blktrans_dev+0x174/0x184
 [<900e748e>] mtdblock_add_mtd+0x36/0x3c
 [<900e6e38>] blktrans_notify_add+0x1a/0x3a
 [<900e533c>] add_mtd_device+0x60/0xa0
 [<900e5f7e>] add_mtd_partitions+0x37a/0x3a0
 [<900ec4d0>] physmap_flash_probe+0x1ec/0x21c
 [<900e0f24>] platform_drv_probe+0x10/0x12
 [<900e06d0>] driver_probe_device+0x84/0xf0
 [<900e076a>] __driver_attach+0x2e/0x44
 [<900e0096>] bus_for_each_dev+0x2e/0x4c
 [<900e05b6>] driver_attach+0x12/0x14
 [<900e036c>] bus_add_driver+0x6c/0x178
 [<900e08a4>] driver_register+0x58/0xb0
 [<900e1126>] platform_driver_register+0x56/0x5c
 [<9000aaf6>] physmap_init+0xa/0x10
 [<9001422a>] do_one_initcall+0x2a/0x10c
 [<900005b8>] kernel_init+0x48/0x90
 [<9001fcc0>] do_exit+0x0/0x4cc

I wonder if it's related?

Haavard

[fullquoting since others might find the below interesting]

> > INFO: 0x91c0a0c0-0x91c0a13f. First byte 0xff instead of 0x6b
> > INFO: Slab 0x90157100 used=2 fp=0x91c0a080 flags=0x40c2
> > INFO: Object 0x91c0a080 @offset=8320 fp=0x91c0b0c0
> > 
> > Bytes b4 0x91c0a070:  5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZZZZZZZZZ
> >   Object 0x91c0a080:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> >   Object 0x91c0a090:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> >   Object 0x91c0a0a0:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> >   Object 0x91c0a0b0:  6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
> >   Object 0x91c0a0c0:  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
> >   Object 0x91c0a0d0:  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
> >   Object 0x91c0a0e0:  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
> >   Object 0x91c0a0f0:  ff ff ff ff ff ff ff ff ff ff ff ff 3d ff 3d ff ÿÿÿÿÿÿÿÿÿÿÿÿ=ÿ=ÿ
> >  Redzone 0x91c0b080:  bb bb bb bb                                     »»»»
> >  Padding 0x91c0b0a8:  5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZZZZZZZZZ
> >  Padding 0x91c0b0b8:  5a 5a 5a 5a 5a 5a 5a 5a                         ZZZZZZZZ
> > Call trace:
> >  [<90010680>] dump_stack+0x18/0x20
> >  [<90048468>] print_trailer+0xdc/0x108
> >  [<90048500>] check_bytes_and_report+0x6c/0x8c
> >  [<900486b0>] check_object+0x84/0x170
> >  [<900490ae>] __slab_alloc+0x2c2/0x35c
> >  [<900499fc>] kmem_cache_alloc+0x20/0x50
> >  [<900967d8>] kobject_uevent_env+0x6c/0x1c8
> >  [<9009693c>] kobject_uevent+0x8/0xc
> >  [<90071c5e>] register_disk+0xbe/0xf0
> >  [<90092d88>] add_disk+0x2c/0x38
> >  [<900b25cc>] add_mtd_blktrans_dev+0x16c/0x17c
> >  [<900b296a>] mtdblock_add_mtd+0x36/0x3c
> >  [<900b233c>] blktrans_notify_add+0x1a/0x36
> >  [<900b0832>] add_mtd_device+0x62/0x9c
> >  [<900b147a>] add_mtd_partitions+0x386/0x3a8
> >  [<900090dc>] atmel_nand_probe+0x2b8/0x300
> >  [<900aeaf0>] platform_drv_probe+0x10/0x12
> >  [<900ad9c8>] driver_probe_device+0x7c/0xe8
> >  [<900adb22>] __driver_attach+0x4e/0x88
> >  [<900ad12e>] bus_for_each_dev+0x2e/0x4c
> >  [<900ad8b6>] driver_attach+0x12/0x14
> >  [<900ad700>] bus_add_driver+0x6c/0x178
> >  [<900adcda>] driver_register+0x3e/0x94
> >  [<900aec5a>] platform_driver_register+0x4a/0x50
> >  [<900aec6a>] platform_driver_probe+0xa/0x38
> >  [<90008e1e>] atmel_nand_init+0xe/0x14
> >  [<900003e2>] kernel_init+0x8e/0x1c8
> >  [<9001966c>] do_exit+0x0/0x428
> > 
> > FIX kmalloc-4096: Restoring 0x91c0a0c0-0x91c0a13f=0x6b
> > 
> > FIX kmalloc-4096: Marking all objects used
> > atmel_spi atmel_spi.0: Atmel SPI Controller at 0xffe00000 (irq 3)
> > atmel_usba_udc atmel_usba_udc.0: MMIO registers at 0xfff03000 mapped at fff03000
> > atmel_usba_udc atmel_usba_udc.0: FIFO at 0xff300000 mapped at ff300000
> > at32ap700x_rtc at32ap700x_rtc.0: rtc core: registered at32ap700x_rtc as rtc0
> > at32ap700x_rtc at32ap700x_rtc.0: Atmel RTC for AT32AP700x at fff00080 irq 21
> > at32_wdt at32_wdt.0: AT32AP700X WDT at 0xfff000b0, timeout 2 sec (nowayout=0)
> > cpufreq: AT32AP CPU frequency driver
> > at32ap700x_rtc at32ap700x_rtc.0: setting system clock to 1970-01-01 00:00:00 UTC (0)
> > VFS: Mounted root (jffs2 filesystem).
> > Freeing init memory: 48K (90000000 - 9000c000)
> 
> It seems like the data that starts this error initiates from.
> 
> Drivers/mtd/nand/atmel_nand.c line 634
> return platform_driver_probe(&atmel_nand_driver, atmel_nand_probe);
> 
> ...
> 
> fs/partitions/check.c line 446
> kobject_uevent(&disk->dev.kobj, KOBJ_ADD);
> 
> lib/kobject_uevent.c line 156
> env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL);
> 
> include/linux/slab.h line 271
> return kmalloc(size, flags | __GFP_ZERO); 
> 
> The needed space for the struct is 2184 and the kzalloc is called with size 2184 as well. Resulting in a 4kb chache that seems not to be free and something is overwritten.
> 
> The function in check.c is called many times when registering different partitions and only fails when related to the atmel_nand driver.
> 
> Does anyone know how I can go from here to try and locate what is wrong?
> 
> The error occurs in both the 2.6.25.10.atmel.2 as well as 2.6.25.6.atmel.1
> 
> ____________________________________________________
>  
> Eirik Aanonsen
> SW Developer
> E-mail: eaa at wprmedical.com
> Phone: +47 90 68 11 92
> Fax: +47 37 03 56 77
> ____________________________________________________
> 
> _______________________________________________
> Kernel mailing list
> Kernel at avr32linux.org
> http://duppen.flaskehals.net/cgi-bin/mailman/listinfo/kernel



More information about the linux-mtd mailing list