[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <yftcjac4lb3j6pkszvd5mvb2myqbfs3k72ey6nj4wgyv3lc2z2@6fny5k356udd>
Date: Mon, 27 Oct 2025 13:53:59 +0800
From: Heming Zhao <heming.zhao@...e.com>
To: Joseph Qi <joseph.qi@...ux.alibaba.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>, ocfs2-devel@...ts.linux.dev,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/2] ocfs2: use correct endian in ocfs2_dinode_has_extents
On Sat, Oct 25, 2025 at 08:32:17PM +0800, Joseph Qi wrote:
> Fields in ocfs2_dinode is little endian, covert to host endian when
> checking those contents.
>
> Fixes: fdbb6cd96ed5 ("ocfs2: correct l_next_free_rec in online check")
> Signed-off-by: Joseph Qi <joseph.qi@...ux.alibaba.com>
Reviewed-by: Heming Zhao <heming.zhao@...e.com>
> ---
> fs/ocfs2/inode.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/fs/ocfs2/inode.c b/fs/ocfs2/inode.c
> index fcc89856ab95..0a0a96054bfe 100644
> --- a/fs/ocfs2/inode.c
> +++ b/fs/ocfs2/inode.c
> @@ -201,13 +201,15 @@ struct inode *ocfs2_iget(struct ocfs2_super *osb, u64 blkno, unsigned flags,
> static int ocfs2_dinode_has_extents(struct ocfs2_dinode *di)
> {
> /* inodes flagged with other stuff in id2 */
> - if (di->i_flags & (OCFS2_SUPER_BLOCK_FL | OCFS2_LOCAL_ALLOC_FL |
> - OCFS2_CHAIN_FL | OCFS2_DEALLOC_FL))
> + if (le32_to_cpu(di->i_flags) &
> + (OCFS2_SUPER_BLOCK_FL | OCFS2_LOCAL_ALLOC_FL | OCFS2_CHAIN_FL |
> + OCFS2_DEALLOC_FL))
> return 0;
> /* i_flags doesn't indicate when id2 is a fast symlink */
> - if (S_ISLNK(di->i_mode) && di->i_size && di->i_clusters == 0)
> + if (S_ISLNK(le16_to_cpu(di->i_mode)) && le64_to_cpu(di->i_size) &&
> + !le32_to_cpu(di->i_clusters))
> return 0;
> - if (di->i_dyn_features & OCFS2_INLINE_DATA_FL)
> + if (le16_to_cpu(di->i_dyn_features) & OCFS2_INLINE_DATA_FL)
> return 0;
>
> return 1;
> --
> 2.39.3
>
Powered by blists - more mailing lists