2024-01-12 04:27:16

by Su Hui

[permalink] [raw]
Subject: [PATCH] ocfs2: remove useless code in ocfs2_try_to_merge_extent

Clang static checker warning: Value stored to 'rec' is never read.
Remove this useless code to silent this warning.

Signed-off-by: Su Hui <[email protected]>
---
fs/ocfs2/alloc.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c
index ea9127ba3208..71729e4326d3 100644
--- a/fs/ocfs2/alloc.c
+++ b/fs/ocfs2/alloc.c
@@ -3743,8 +3743,6 @@ static int ocfs2_try_to_merge_extent(handle_t *handle,
goto out;
}

- rec = &el->l_recs[split_index];
-
/*
* Note that we don't pass split_rec here on purpose -
* we've merged it into the rec already.
--
2.30.2



2024-01-16 22:09:02

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] ocfs2: remove useless code in ocfs2_try_to_merge_extent

On Fri, 12 Jan 2024 12:26:40 +0800 Su Hui <[email protected]> wrote:

> Clang static checker warning: Value stored to 'rec' is never read.
> Remove this useless code to silent this warning.
>
> --- a/fs/ocfs2/alloc.c
> +++ b/fs/ocfs2/alloc.c
> @@ -3743,8 +3743,6 @@ static int ocfs2_try_to_merge_extent(handle_t *handle,
> goto out;
> }
>
> - rec = &el->l_recs[split_index];
> -
> /*
> * Note that we don't pass split_rec here on purpose -
> * we've merged it into the rec already.

Then:

ret = ocfs2_merge_rec_left(path, handle, et, rec,
dealloc, split_index);

and ocfs2_merge_rec_left() almost immediately dereferences `rec'.

So this looks quite wrong to me.

2024-01-17 01:23:46

by Su Hui

[permalink] [raw]
Subject: Re: [PATCH] ocfs2: remove useless code in ocfs2_try_to_merge_extent

On 2024/1/17 04:09, Andrew Morton wrote:
> On Fri, 12 Jan 2024 12:26:40 +0800 Su Hui <[email protected]> wrote:
>
>> Clang static checker warning: Value stored to 'rec' is never read.
>> Remove this useless code to silent this warning.
>>
>> --- a/fs/ocfs2/alloc.c
>> +++ b/fs/ocfs2/alloc.c
>> @@ -3743,8 +3743,6 @@ static int ocfs2_try_to_merge_extent(handle_t *handle,
>> goto out;
>> }
>>
>> - rec = &el->l_recs[split_index];
>> -
>> /*
>> * Note that we don't pass split_rec here on purpose -
>> * we've merged it into the rec already.
> Then:
>
> ret = ocfs2_merge_rec_left(path, handle, et, rec,
> dealloc, split_index);
>
> and ocfs2_merge_rec_left() almost immediately dereferences `rec'.
>
> So this looks quite wrong to me.
>
Oh, really sorry for the noise.
This patch is wrong.

Su Hui