[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