[ECOS] JFFS2: endless loop in jffs2_kill_fragtree
Mike Jastrebtsoff
jam2000@pisem.net
Wed Jul 28 12:18:00 GMT 2004
Hello, All
After several operations of opening/creating files on JFFS2
fd = open("...", O_TRUNC|O_CREAT|O_RDWR);
enters the endless cycle in
jffs2_do_clear_inode(...)->jffs2_kill_fragtree(...) -> endless loop!
nodelist.c:
...
void jffs2_kill_fragtree(struct rb_root *root, struct jffs2_sb_info *c)
{
...
while(frag) {
if (frag->rb.rb_left) {
D2(printk(KERN_DEBUG "Going left from frag (%p) %d-%d\n",
frag, frag->ofs, frag->ofs+frag->size));
frag = frag_left(frag);
continue;
}
if (frag->rb.rb_right) {
D2(printk(KERN_DEBUG "Going right from frag (%p) %d-%d\n",
frag, frag->ofs, frag->ofs+frag->size));
frag = frag_right(frag);
continue;
}
...
}
After several cycles "frag" pointer becomes a trash (smth. like frag == 0xbc010001)
I am using EB55 board, GCC 3.3.3, ecos from CVS.
I've tested the memory, flash is ok.
Any ideas?
--
Regards,
Mike
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list