]> git.sur5r.net Git - u-boot/commitdiff
Add crc of data to jffs2 (in jffs2_1pass_build_lists()).
authorWolfgang Denk <wd@pollux.denx.de>
Sun, 12 Mar 2006 15:05:05 +0000 (16:05 +0100)
committerWolfgang Denk <wd@pollux.denx.de>
Sun, 12 Mar 2006 15:05:05 +0000 (16:05 +0100)
Patch by Rick Bronson, 15 Jun 2005

CHANGELOG
fs/jffs2/jffs2_1pass.c
fs/jffs2/jffs2_private.h

index 57b4e78659c49724f7aed4abb8e0aa26091345b9..43d0133e46758edf33f9602f60d3a95db0087fa3 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
 Changes since U-Boot 1.1.4:
 ======================================================================
 
+* Add crc of data to jffs2 (in jffs2_1pass_build_lists()).
+  Patch by Rick Bronson, 15 Jun 2005
+
 * Coding Style cleanup
 
 * Avoid dereferencing NULL in find_cmd() if no valid commands were found
index 6361d06d200a77ed293be63eede3d76e351fe233..49c86524c769d5524c261e2de5fc27c5b604bc70 100644 (file)
@@ -1171,7 +1171,8 @@ jffs2_1pass_build_lists(struct part_info * part)
                if (node->magic == JFFS2_MAGIC_BITMASK && hdr_crc(node)) {
                        /* if its a fragment add it */
                        if (node->nodetype == JFFS2_NODETYPE_INODE &&
-                                   inode_crc((struct jffs2_raw_inode *) node)) {
+                                   inode_crc((struct jffs2_raw_inode *) node) &&
+                                   data_crc((struct jffs2_raw_inode *) node)) {
                                if (insert_node(&pL->frag, (u32) part->offset +
                                                offset) == NULL) {
                                        put_fl_mem(node);
index 65ca6eb98f239ab26599ac2a6423b6a04c48d145..3e1fff4739d0424e5aa2abedf36c86f2f429b083 100644 (file)
@@ -85,4 +85,16 @@ inode_crc(struct jffs2_raw_inode *node)
        }
 }
 
+static inline int
+data_crc(struct jffs2_raw_inode *node)
+{
+       if (node->data_crc != crc32_no_comp(0, (unsigned char *)
+                                            ((int) &node->node_crc + sizeof (node->node_crc)),
+                                             node->csize)) {
+               return 0;
+       } else {
+               return 1;
+       }
+}
+
 #endif /* jffs2_private.h */