kernel 2.6.34 ; yaffs_guts.c,v 1.79 2009/03/05 01:45:28 VFS not found the symbol link on yaffs2 file system #cd /mnt/bin #ln -s busybox sl2bbx #./sl2bbx -sh: ./sl2bbx: not found #cd /usr/sbin #ln -s nanddump sl2ndmp #./sl2ndmp -sh: ./sl2ndmp: not found turn on os trace: # cd /mnt/bin # ./sl2bbx [ 1064.080000] yaffs locking [ 1064.080000] yaffs locked [ 1064.080000] yaffs_lookup for 261:sl2bbx [ 1064.080000] yaffs unlocking [ 1064.090000] yaffs_lookup found 590 [ 1064.090000] yaffs_get_inode for object 590 [ 1064.090000] yaffs_iget for 590 [ 1064.100000] yaffs locking [ 1064.100000] yaffs locked [ 1064.100000] yaffs_FillInode mode a1ff uid 0 gid 0 size 7 count 1 [ 1064.110000] yaffs unlocking [ 1064.110000] yaffs_loookup dentry [ 1064.120000] yaffs locking [ 1064.120000] yaffs locked [ 1064.120000] yaffs unlocking [ 1064.130000] yaffs locking [ 1064.130000] yaffs locked [ 1064.130000] yaffs_lookup for 261:`q@sbox //fisrt 4 byte is wrong , right is busybox [ 1064.140000] yaffs unlocking [ 1064.140000] yaffs_lookup not found -sh: ./sl2bbx: not found in yaffs_follow_link: alias = yaffs_GetSymlinkAlias(yaffs_DentryToObject(dentry)); // alias value is busybox kfree(alias); //-----NOTE here ,after free alias, now the memory hold alias is `q@sbox return form yaffs_follow_link ,back to VFS ,and finally goto yaffs_lookup: in yaffs_lookup: T(YAFFS_TRACE_OS, ( "yaffs_lookup for %d:%s\n", yaffs_InodeToObject(dir)->objectId, dentry->d_name.name)); } else { T(YAFFS_TRACE_OS, ( "yaffs_lookup not found\n")); } //------NOTE HERE dentry->d_name.name is `q@sbox ,so we canot get the real yaffs object(which should be busybox) I think this is a problem of yaffs_follw_link, is there somebody else get the same result? Charles can you give some tip?