* [PATCH 1/1] btrfs: scrub: Fix use of uninitialized variable
@ 2023-12-09 8:21 'Guanjun'
2023-12-09 21:09 ` Qu Wenruo
0 siblings, 1 reply; 2+ messages in thread
From: 'Guanjun' @ 2023-12-09 8:21 UTC (permalink / raw)
To: wqu, dsterba, clm, josef, linux-btrfs
From: Guanjun <guanjun@linux.alibaba.com>
'ret' will be uninitialized in case that the logical_length
is 0. Even if the caller has already ensured that logical_length
is greater than 0, we still need to fix this issue. Due to the
compiler may complain like this:
fs/btrfs/scrub.c: In function ‘scrub_simple_mirror.constprop’:
fs/btrfs/scrub.c:2123:9: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
2123 | return ret;
| ^~~
Fixes: 09022b14fafc (btrfs: scrub: introduce dedicated helper to scrub simple-mirror based range)
Signed-off-by: Guanjun <guanjun@linux.alibaba.com>
---
fs/btrfs/scrub.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
index a01807cbd4d4..13024131f77d 100644
--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c
@@ -2071,7 +2071,7 @@ static int scrub_simple_mirror(struct scrub_ctx *sctx,
struct btrfs_fs_info *fs_info = sctx->fs_info;
const u64 logical_end = logical_start + logical_length;
u64 cur_logical = logical_start;
- int ret;
+ int ret = 0;
/* The range must be inside the bg */
ASSERT(logical_start >= bg->start && logical_end <= bg->start + bg->length);
--
2.39.3
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH 1/1] btrfs: scrub: Fix use of uninitialized variable
2023-12-09 8:21 [PATCH 1/1] btrfs: scrub: Fix use of uninitialized variable 'Guanjun'
@ 2023-12-09 21:09 ` Qu Wenruo
0 siblings, 0 replies; 2+ messages in thread
From: Qu Wenruo @ 2023-12-09 21:09 UTC (permalink / raw)
To: 'Guanjun', wqu, dsterba, clm, josef, linux-btrfs
[-- Attachment #1.1.1: Type: text/plain, Size: 1991 bytes --]
On 2023/12/9 18:51, 'Guanjun' wrote:
> From: Guanjun <guanjun@linux.alibaba.com>
>
> 'ret' will be uninitialized in case that the logical_length
> is 0. Even if the caller has already ensured that logical_length
> is greater than 0, we still need to fix this issue. Due to the
> compiler may complain like this:
>
> fs/btrfs/scrub.c: In function ‘scrub_simple_mirror.constprop’:
> fs/btrfs/scrub.c:2123:9: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> 2123 | return ret;
> | ^~~
>
Compiler version and config please.
You know btrfs has enabled -Wmaybe-uninitialized already and all
warnings would be treated as error.
This means if this is really valid, tons of testers would already hit it.
Thus I'm wondering if it's some internal out-of-date toolchain on your side.
Furthermore, if you really want to fix the problem, I strongly
discourage from blindly setting the @ret to 0.
But change all the break calls of the loop to return directly, so that
the final return out of the loop can always return 0, so that @ret can
be defined inside the loop, and be much safer.
Thanks,
Qu
> Fixes: 09022b14fafc (btrfs: scrub: introduce dedicated helper to scrub simple-mirror based range)
> Signed-off-by: Guanjun <guanjun@linux.alibaba.com>
> ---
> fs/btrfs/scrub.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
> index a01807cbd4d4..13024131f77d 100644
> --- a/fs/btrfs/scrub.c
> +++ b/fs/btrfs/scrub.c
> @@ -2071,7 +2071,7 @@ static int scrub_simple_mirror(struct scrub_ctx *sctx,
> struct btrfs_fs_info *fs_info = sctx->fs_info;
> const u64 logical_end = logical_start + logical_length;
> u64 cur_logical = logical_start;
> - int ret;
> + int ret = 0;
>
> /* The range must be inside the bg */
> ASSERT(logical_start >= bg->start && logical_end <= bg->start + bg->length);
[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 7027 bytes --]
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-12-09 21:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-09 8:21 [PATCH 1/1] btrfs: scrub: Fix use of uninitialized variable 'Guanjun'
2023-12-09 21:09 ` Qu Wenruo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox