On Tuesday 12 January 2010 14:42:09 김원일 wrote:
> hello.... charles
>
> I do display errorr point (red color).
>
> In yaffs_fs.c and yaffs_guts.c, please... confirm to file.
>
> I know...yaffs_GetObjectInode() function is getting i-node.
>
> I-node had "NULL" value.
>
> this time, yaffs filesystem display error message.
>
> I think to lost I-node. why do lost I-node?
> what is reason? you will know me.
>
> thank you for you...
>
> as soon as.... I wish to send reason via e-mail to me.
>
>
>
>
>
>
>
>
> ----------------------------------------------------
> Kernel error Message
> ----------------------------------------------------
>
> [root@hello /mnt/mtd3/up_wait_]# ls
> Unable to handle kernel NULL pointer dereference at virtual address
> 00000030 pgd = c3e8c000
> [00000030] *pgd=33e3f031, *pte=00000000, *ppte=00000000
> Internal error: Oops: 17 [#1]
> Modules linked in:
> CPU: 0
> PC is at yaffs_GetObjectInode+0x10/0x18
> LR is at yaffs_GetObjectInode+0x10/0x18
> pc : [<c011c338>] lr : [<c011c338>] Not tainted
> sp : c3d77df4 ip : c3d77df4 fp : c3d77e00
> r10: 00000002 r9 : 00000002 r8 : c04924d4
> r7 : 00000001 r6 : c3e3d0d0 r5 : c04924b4 r4 : 0000002f
> r3 : 00000004 r2 : c3d77e24 r1 : 000014b2 r0 : 00000000
> Flags: nZCv IRQs on FIQs on Mode SVC_32 Segment user
> Control: 717F Table: 33E8C000 DAC: 00000015
> Process ls (pid: 934, stack limit = 0xc3d76194)
> Stack: (0xc3d77df4 to 0xc3d78000)
> 7de0: c3d77f4c c3d77e04
> c01154bc 7e00: c011c338 00000000 00000001 00000004 c05651a4 c0f87700
> c0e4b000 c0096db8 7e20: c3d77f74 34303255 36342e30 30333030 34312e30
> 35303736 2e343432 39303032 7e40: 30323031 37323731 312e3632 30303634
> 00303033 00000000 00000000 00000000 7e60: 00000000 00000000 00000000
> 00000000 00000000 00000000 00000000 00000000 7e80: 00000000 00000000
> 00000000 00000000 00000000 00000000 00000000 00000000 7ea0: 00000000
> 00000000 00000000 00000000 00000000 00000000 00000000 00000000 7ec0:
> 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> 7ee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> 00000000 7f00: 00000000 00000000 00000000 00000000 00000000 00000000
> 00000000 00000000 7f20: 00000000 c0f876e0 c3e3d140 c3e3d0d0 fffffffe
> c0096db8 c3d76000 401babcc 7f40: c3d77f70 c3d77f50 c0096a68 c01152d4
> 0008e110 00000000 00001000 fffffff7 7f60: c0f876e0 c3d77fa4 c3d77f74
> c0096f98 c00969c8 0008e140 0008e128 00000fd0 7f80: ffffffea 00001000
> 000002b4 00000000 000000d9 c00340a4 00000000 c3d77fa8 7fa0: c0033f20
> c0096f3c 00001000 000002b4 00000003 0008e110 00001000 00000278 7fc0:
> 00001000 000002b4 00000000 000028cc 00000000 0008e0e0 401babcc beee1cf8
> 7fe0: 0008e110 beee1ca0 401bb0d0 4013473c 20000010 00000003 00000200
> 00000440 Backtrace:
> [<c011c328>] (yaffs_GetObjectInode+0x0/0x18) from [<c01154bc>]
> (yaffs_readdir+0x1f8/0x2b4) [<c01152c4>] (yaffs_readdir+0x0/0x2b4) from
> [<c0096a68>] (vfs_readdir+0xb0/0xd0) [<c00969b8>] (vfs_readdir+0x0/0xd0)
> from [<c0096f98>] (sys_getdents64+0x6c/0xc4) r8 = C0F876E0 r7 = FFFFFFF7
> r6 = 00001000 r5 = 00000000
> r4 = 0008E110
> [<c0096f2c>] (sys_getdents64+0x0/0xc4) from [<c0033f20>]
> (ret_fast_syscall+0x0/0x2c) r8 = C00340A4 r7 = 000000D9 r6 = 00000000 r5
> = 000002B4
> r4 = 00001000
> Code: e1a0c00d e92dd800 e24cb004 ebffed57 (e5900030)
> Segmentation fault
>
> -----------------------------------------------------
>
>
>
>
> # source contens
>
> static int yaffs_readdir(struct file *f, void *dirent, filldir_t filldir)
> in yaffs_fs.c
>
> list_for_each(i, &obj->variant.directoryVariant.children) {
> curoffs++;
> if (curoffs >= offset) {
> l = list_entry(i, yaffs_Object, siblings);
>
> yaffs_GetObjectName(l, name,
> YAFFS_MAX_NAME_LENGTH + 1);
> T(YAFFS_TRACE_OS,
> (KERN_DEBUG "yaffs_readdir: %s inode %d\n", name,
> yaffs_GetObjectInode(l)));
>
> if (filldir(dirent,
> name,
> strlen(name),
> offset,
> yaffs_GetObjectInode(l),
> yaffs_GetObjectType(l))
> < 0) {
> goto up_and_out;
> }
>
> offset++;
> f->f_pos++;
> }
> }
This code has been changed. Please try with the latest.
If you still get the problem then please provide a test case for this.
-- CHarles