X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=fs%2Fjffs2%2Fgc.c;h=32ff0373aa04d0c9f709ec22c64ad9086c343448;hb=7c43f2b888f9ca1fcb7b07abc4cbff4ca1b8e03b;hp=95be264fe9b604961fc0062e891eea5ab6b85ed6;hpb=2665ea842dc9f4c04bdb57f8b7c2023759ac8c85;p=safe%2Fjmp%2Flinux-2.6 diff --git a/fs/jffs2/gc.c b/fs/jffs2/gc.c index 95be264..32ff037 100644 --- a/fs/jffs2/gc.c +++ b/fs/jffs2/gc.c @@ -414,9 +414,7 @@ int jffs2_garbage_collect_pass(struct jffs2_sb_info *c) /* Eep. This really should never happen. GC is broken */ printk(KERN_ERR "Error garbage collecting node at %08x!\n", ref_offset(jeb->gc_node)); ret = -ENOSPC; - } else if (ref_offset(jeb->gc_node) == 0x1c616bdc) - printk(KERN_ERR "Wheee. Correctly GC'd node at %08x\n", ref_offset(jeb->gc_node)); - + } release_sem: up(&c->alloc_sem); @@ -608,10 +606,15 @@ static int jffs2_garbage_collect_pristine(struct jffs2_sb_info *c, goto bail; } + if (strnlen(node->d.name, node->d.nsize) != node->d.nsize) { + printk(KERN_WARNING "Name in dirent node at 0x%08x contains zeroes\n", ref_offset(raw)); + goto bail; + } + if (node->d.nsize) { crc = crc32(0, node->d.name, node->d.nsize); if (je32_to_cpu(node->d.name_crc) != crc) { - printk(KERN_WARNING "Name CRC failed on REF_PRISTINE dirent ode at 0x%08x: Read 0x%08x, calculated 0x%08x\n", + printk(KERN_WARNING "Name CRC failed on REF_PRISTINE dirent node at 0x%08x: Read 0x%08x, calculated 0x%08x\n", ref_offset(raw), je32_to_cpu(node->d.name_crc), crc); goto bail; }