[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