[PATCH] JFFS2: fix jffs2 summary datacrc status uninitialized
Wagner Popov dos Santos
wpopov at gmail.com
Thu Mar 4 01:36:26 CET 2021
Forgot to Cc the maintainer, doing it now, sorry for the spam.
On ter, 2021-02-23 às 00:49 -0300, Wagner Popov dos Santos wrote:
> 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 at gmail.com>
> ---
> fs/jffs2/jffs2_1pass.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/fs/jffs2/jffs2_1pass.c b/fs/jffs2/jffs2_1pass.c
> index a98745c50e..c9eda54cdb 100644
> --- a/fs/jffs2/jffs2_1pass.c
> +++ b/fs/jffs2/jffs2_1pass.c
> @@ -1276,6 +1276,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;
> @@ -1297,6 +1298,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(
More information about the U-Boot
mailing list