lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <7a8b2331-a252-58ef-6553-ceb73a9a63c9@linux.alibaba.com>
Date:   Thu, 19 Oct 2023 09:22:16 +0800
From:   Joseph Qi <joseph.qi@...ux.alibaba.com>
To:     Jia Rui <jindui71@...il.com>, mark@...heh.com,
        akpm <akpm@...ux-foundation.org>
Cc:     jlbec@...lplan.org, ocfs2-devel@...ts.linux.dev,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH] ocfs2: replace BUG_ON() at ocfs2_num_free_extents() with
 ocfs2_error()



On 10/19/23 3:18 AM, Jia Rui wrote:
> The BUG_ON() at ocfs2_num_free_extents() handles the error that
> l_tree_deepth of leaf extent block just read form disk is invalid.
> This error is mostly caused by file system metadata corruption on
> the disk. There is no need to call BUG_ON() to handle such errors.
> We can return error code, since the caller can deal with errors
> from ocfs2_num_free_extents(). Also, we should make the file
> system read-only to avoid the damage from expanding.
> 
> Therefore, BUG_ON() is removed and ocfs2_error() is called instead.
> 
> Signed-off-by: Jia Rui <jindui71@...il.com>

Looks reasonable.
Reviewed-by: Joseph Qi <joseph.qi@...ux.alibaba.com>

> ---
>  fs/ocfs2/alloc.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c
> index aef58f1395c8..d6bcf00f6843 100644
> --- a/fs/ocfs2/alloc.c
> +++ b/fs/ocfs2/alloc.c
> @@ -967,7 +967,14 @@ int ocfs2_num_free_extents(struct ocfs2_extent_tree *et)
>  		el = &eb->h_list;
>  	}
>  
> -	BUG_ON(el->l_tree_depth != 0);
> +	if (el->l_tree_depth != 0) {
> +		retval = ocfs2_error(ocfs2_metadata_cache_get_super(et->et_ci),
> +				"Owner %llu has leaf extent block %llu with an invalid l_tree_depth of %u\n",
> +				(unsigned long long)ocfs2_metadata_cache_owner(et->et_ci),
> +				(unsigned long long)last_eb_blk,
> +				le16_to_cpu(el->l_tree_depth));
> +		goto bail;
> +	}
>  
>  	retval = le16_to_cpu(el->l_count) - le16_to_cpu(el->l_next_free_rec);
>  bail:

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ