]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
JFFS2: fix jffs2 summary datacrc status uninitialized
authorWagner Popov dos Santos <wpopov@gmail.com>
Tue, 23 Feb 2021 03:49:00 +0000 (00:49 -0300)
committerTom Rini <trini@konsulko.com>
Wed, 7 Apr 2021 14:22:22 +0000 (10:22 -0400)
The function jffs2_1pass_read_inode() was discarding the summary
inodes and dirent because the value in datacrc flag wasn't
initialized in function jffs2_sum_process_sum_data().

This fix initializes the status of all summary records to indicate
that the CRC needs to be verified when they are loaded.

Before this fix, the behaviors produced by the undefined value of
datacrc was:
- Summary's registries were discarded when 'b->datacrc' is equal
  as 'CRC_BAD'.
- Summary's registries were not checked when b->datacrc differs of
  'CRC_BAD' and 'CRC_UNKNOWN'

So, almost all of the time the crc just isn't checked, and in some
cases the registries are discarded.

Signed-off-by: Wagner Popov dos Santos <wpopov@gmail.com>
fs/jffs2/jffs2_1pass.c

index b39943671c98251075776031df3c6d0ad66d8dc4..1818e8121569f384d97e83e3b959d84ddfa23c97 100644 (file)
@@ -1293,6 +1293,7 @@ static int jffs2_sum_process_sum_data(struct part_info *part, uint32_t offset,
                                                        &spi->version);
                                                b->ino = sum_get_unaligned32(
                                                        &spi->inode);
+                                               b->datacrc = CRC_UNKNOWN;
                                        }
 
                                        sp += JFFS2_SUMMARY_INODE_SIZE;
@@ -1314,6 +1315,7 @@ static int jffs2_sum_process_sum_data(struct part_info *part, uint32_t offset,
                                                        &spd->version);
                                                b->pino = sum_get_unaligned32(
                                                        &spd->pino);
+                                               b->datacrc = CRC_UNKNOWN;
                                        }
 
                                        sp += JFFS2_SUMMARY_DIRENT_SIZE(