ino = je32_to_cpu(spi->inode);
 
-                               dbg_summary("Inode at 0x%08x\n",
-                                                       jeb->offset + je32_to_cpu(spi->offset));
+                               dbg_summary("Inode at 0x%08x-0x%08x\n",
+                                           jeb->offset + je32_to_cpu(spi->offset),
+                                           jeb->offset + je32_to_cpu(spi->offset) + je32_to_cpu(spu->totlen));
 
                                raw = alloc_ref_at(c, jeb, je32_to_cpu(spi->offset));
                                if (!raw) {
                                spd = sp;
 
                                dbg_summary("Dirent at 0x%08x\n",
-                                                       jeb->offset + je32_to_cpu(spd->offset));
+                                           jeb->offset + je32_to_cpu(spd->offset),
+                                           jeb->offset + je32_to_cpu(spd->offset) + je32_to_cpu(spd->totlen));
+
 
                                fd = jffs2_alloc_full_dirent(spd->nsize+1);
                                if (!fd)
                                struct jffs2_sum_xattr_flash *spx;
 
                                spx = (struct jffs2_sum_xattr_flash *)sp;
-                               dbg_summary("xattr at %#08x (xid=%u, version=%u)\n", 
+                               dbg_summary("xattr at %#08x-%#08x (xid=%u, version=%u)\n", 
                                            jeb->offset + je32_to_cpu(spx->offset),
+                                           jeb->offset + je32_to_cpu(spx->offset) + je32_to_cpu(spx->totlen),
                                            je32_to_cpu(spx->xid), je32_to_cpu(spx->version));
                                raw = alloc_ref_at(c, jeb, je32_to_cpu(spx->offset));
                                if (!raw) {
                                        JFFS2_NOTICE("allocation of node reference failed\n");
-                                       kfree(summary);
                                        return -ENOMEM;
                                }
                                xd = jffs2_setup_xattr_datum(c, je32_to_cpu(spx->xid),
                                                break;
                                        }
                                        JFFS2_NOTICE("allocation of xattr_datum failed\n");
-                                       kfree(summary);
                                        return PTR_ERR(xd);
                                }
                                xd->node = raw;
                                struct jffs2_sum_xref_flash *spr;
 
                                spr = (struct jffs2_sum_xref_flash *)sp;
-                               dbg_summary("xref at %#08x (xid=%u, ino=%u)\n",
+                               dbg_summary("xref at %#08x-%#08x\n",
                                            jeb->offset + je32_to_cpu(spr->offset),
-                                           je32_to_cpu(spr->xid), je32_to_cpu(spr->ino));
+                                           jeb->offset + je32_to_cpu(spr->offset) + PAD(sizeof(struct jffs2_raw_xref)));
+
                                raw = alloc_ref_at(c, jeb, je32_to_cpu(spr->offset));
                                if (!raw) {
                                        JFFS2_NOTICE("allocation of node reference failed\n");
-                                       kfree(summary);
                                        return -ENOMEM;
                                }
                                ref = jffs2_alloc_xattr_ref();
                                if (!ref) {
                                        JFFS2_NOTICE("allocation of xattr_datum failed\n");
                                        jffs2_free_raw_node_ref(raw);
-                                       kfree(summary);
                                        return -ENOMEM;
                                }
                                ref->ino = 0xfffffffe;