I have a colleague who's tripped up using Yaffs in Android. He's
getting an oops:
1. I erase and flash the NAND with u-boot.bin, boot.img, system.img, userdata.img, etc.
2. Once the flash is done, I boot into Kernel from NAND.
3. The first (cold) boot works just fine. It boots all the way up to Android.
4. I power cycle and reboot from NAND.
5. Console runs, and continues to initialize other parts of the system. Then the Kernel panic occurs.
The kernel panic occurs at "yaffs_get_equivalent_obj" and here is a part of the Kernel panic log:
[ 37.996887] Unable to handle kernel NULL pointer dereference at virtual address 00000044
[ 38.005493] pgd = cc320000
[ 38.008331] [00000044] *pgd=8c0bd031, *pte=00000000, *ppte=00000000
[ 38.014953] Internal error: Oops: 17 [#1]
[ 38.019165] last sysfs file: /sys/power/wait_for_fb_sleep
[ 38.024810] Modules linked in: omaplfb pvrsrvkm
[ 38.029571] CPU: 0 Not tainted (2.6.37 #11)
[ 38.034362] PC is at yaffs_get_equivalent_obj+0x14/0x34
[ 38.039825] LR is at yaffs_get_obj_inode+0x18/0x24
[ 38.044860] pc : [<c01f230c>] lr : [<c01f23f4>] psr: a0000013
[ 38.044860] sp : cc2eddc8 ip : cc2edde0 fp : cc2edddc
[ 38.056884] r10: cc2ede20 r9 : 00000003 r8 : 00000003
[ 38.062347] r7 : cc39e840 r6 : c010b658 r5 : ffffffe0 r4 : ffffffe0
[ 38.069183] r3 : ffffffe0 r2 : cc058258 r1 : 0002b598 r0 : ffffffe0
[ 38.076049] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
[ 38.083526] Control: 10c5387d Table: 8c320019 DAC: 00000015
==========================================================================
Here's more of the backtrace:
[ 38.915466] Backtrace:
[ 38.918060] [<c01f22f8>] (yaffs_get_equivalent_obj+0x0/0x34) from [<c01f23f4>] (yaffs_get_obj_inode+0x18/0x24)
[ 38.928527] r5:ffffffe0 r4:c90c4340
[ 38.932312] [<c01f23dc>] (yaffs_get_obj_inode+0x0/0x24) from [<c01efa6c>] (yaffs_readdir+0x2f8/0x49c)
[ 38.941986] [<c01ef774>] (yaffs_readdir+0x0/0x49c) from [<c010ba38>] (vfs_readdir+0x84/0xb8)
[ 38.950836] [<c010b9b4>] (vfs_readdir+0x0/0xb8) from [<c010bad8>] (sys_getdents64+0x6c/0xbc)
[ 38.959716] [<c010ba6c>] (sys_getdents64+0x0/0xbc) from [<c00490c0>] (ret_fast_syscall+0x0/0x30)
[ 38.968902] r7:000000d9 r6:59cc39d8 r5:00203dd0 r4:00203dc0
[ 38.974853] Code: e92dd830 e24cb004 e2504000 0a000005 (e5943064)
[ 38.981353] ---[ end trace 912a238be2663785 ]---
I seem to remember comments on a patch to handle something along these
lines recently, but I can't find the email thread and the mailing list
archive doesn't look to have anything newer than late July. Google
doesn't shed any light on things either. The YAFFS code we're running
was pulled from yaffs.net back on 2011-08-06 (needed to get it to
build/run in linux-3.x kernels).
Any help/suggestions are appreciated!
--
Peter Barada
peter.barada@logicpd.com