[PATCH v2 1/4] fs: cramfs: don't ignore decompression errors
Sascha Hauer
s.hauer at pengutronix.de
Mon Nov 2 01:34:21 PST 2026
On 2026-11-02 10:31, Sascha Hauer wrote:
> cramfs_uncompress_block() returns -EIO when a block fails to
> decompress, but cramfs_read_file() stores that in a size_t, so its
> check for an error, curr_block_len <= 0, only catches empty blocks.
> The error becomes a block length of nearly SIZE_MAX: the read copies
> whatever priv->buf holds, the previous block or nothing that was ever
> written, returns it as success, and keeps it cached as the content of
> the failed block.
>
> Store the length in an int, so that the error ends the read.
>
> Fixes: b42f481fa4 ("reactivate cramfs")
> Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> ---
> fs/cramfs/cramfs.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/cramfs/cramfs.c b/fs/cramfs/cramfs.c
> index d66cce8df8..fcb9aeeab8 100644
> --- a/fs/cramfs/cramfs.c
> +++ b/fs/cramfs/cramfs.c
> @@ -46,7 +46,7 @@ struct cramfs_priv {
> struct cramfs_super super;
> int curr_base;
> char buf[4096];
> - size_t curr_block_len;
> + int curr_block_len;
> struct cdev *cdev;
> };
>
> @@ -149,7 +149,7 @@ static int cramfs_read_file(struct inode *inode, unsigned long offset,
> priv->curr_base = base;
> }
>
> - copy = min(priv->curr_block_len, size);
> + copy = min_t(size_t, priv->curr_block_len, size);
>
> memcpy(buf, priv->buf + ofs, copy);
> ofs = 0;
>
> --
> 2.47.3
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list