This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

JFFS2: endless loop in jffs2_kill_fragtree


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]