[PATCH] ntfs3: avoid -Wmaybe-uninitialized warning

Arnd Bergmann posted 1 patch 1 month, 3 weeks ago
fs/ntfs3/index.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] ntfs3: avoid -Wmaybe-uninitialized warning
Posted by Arnd Bergmann 1 month, 3 weeks ago
From: Arnd Bergmann <arnd@arndb.de>

This warning shows up with gcc-10 now:

In file included from fs/ntfs3/index.c:15:
fs/ntfs3/index.c: In function 'indx_add_allocate':
fs/ntfs3/ntfs_fs.h:463:9: error: 'bmp_size' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  463 |  return attr_set_size_ex(ni, type, name, name_len, run, new_size,
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  464 |     new_valid, keep_prealloc, NULL, false);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fs/ntfs3/index.c:1498:6: note: 'bmp_size' was declared here
 1498 |  u64 bmp_size, bmp_size_v;
      |      ^~~~~~~~

The warning does look correct, as the 'out2' label can be reached
without initializing bmp_size and bmp_size_v. Initialize these at
the same place as bmp.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
Note that this is one is separate from the one I reported with KCSAN
---
 fs/ntfs3/index.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/fs/ntfs3/index.c b/fs/ntfs3/index.c
index 5344b29b0577..2b8b5779ff8a 100644
--- a/fs/ntfs3/index.c
+++ b/fs/ntfs3/index.c
@@ -1506,6 +1506,7 @@ static int indx_add_allocate(struct ntfs_index *indx, struct ntfs_inode *ni,
 
 	if (bit != MINUS_ONE_T) {
 		bmp = NULL;
+		bmp_size = bmp_size_v = 0;
 	} else {
 		if (bmp->non_res) {
 			bmp_size = le64_to_cpu(bmp->nres.data_size);
-- 
2.39.5
Re: [PATCH] ntfs3: avoid -Wmaybe-uninitialized warning
Posted by Konstantin Komarov 3 weeks, 4 days ago
On 4/21/26 22:26, Arnd Bergmann wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> This warning shows up with gcc-10 now:
>
> In file included from fs/ntfs3/index.c:15:
> fs/ntfs3/index.c: In function 'indx_add_allocate':
> fs/ntfs3/ntfs_fs.h:463:9: error: 'bmp_size' may be used uninitialized in this function [-Werror=maybe-uninitialized]
>    463 |  return attr_set_size_ex(ni, type, name, name_len, run, new_size,
>        |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    464 |     new_valid, keep_prealloc, NULL, false);
>        |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> fs/ntfs3/index.c:1498:6: note: 'bmp_size' was declared here
>   1498 |  u64 bmp_size, bmp_size_v;
>        |      ^~~~~~~~
>
> The warning does look correct, as the 'out2' label can be reached
> without initializing bmp_size and bmp_size_v. Initialize these at
> the same place as bmp.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
> Note that this is one is separate from the one I reported with KCSAN
> ---
>   fs/ntfs3/index.c | 1 +
>   1 file changed, 1 insertion(+)
>
> diff --git a/fs/ntfs3/index.c b/fs/ntfs3/index.c
> index 5344b29b0577..2b8b5779ff8a 100644
> --- a/fs/ntfs3/index.c
> +++ b/fs/ntfs3/index.c
> @@ -1506,6 +1506,7 @@ static int indx_add_allocate(struct ntfs_index *indx, struct ntfs_inode *ni,
>   
>   	if (bit != MINUS_ONE_T) {
>   		bmp = NULL;
> +		bmp_size = bmp_size_v = 0;
>   	} else {
>   		if (bmp->non_res) {
>   			bmp_size = le64_to_cpu(bmp->nres.data_size);

Hello,

Sorry for the delay.
Your patch is applied, thank you.

Regards,
Konstantin