btrfs: fix Wmaybe-uninitialized warning
diff mbox series

Message ID 20190903033019.GA149622@LGEARND20B15
State New
Headers show
Series
  • btrfs: fix Wmaybe-uninitialized warning
Related show

Commit Message

Austin Kim Sept. 3, 2019, 3:30 a.m. UTC
gcc throws warning message as below:

‘clone_src_i_size’ may be used uninitialized in this function
[-Wmaybe-uninitialized]
 #define IS_ALIGNED(x, a)  (((x) & ((typeof(x))(a) - 1)) == 0)
                       ^
fs/btrfs/send.c:5088:6: note: ‘clone_src_i_size’ was declared here
 u64 clone_src_i_size;
   ^
The clone_src_i_size is only used as call-by-reference
in a call to get_inode_info().

Silence the warning by initializing clone_src_i_size to 0.

Signed-off-by: Austin Kim <austindh.kim@gmail.com>
---
 fs/btrfs/send.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Austin Kim Sept. 10, 2019, 4:39 p.m. UTC | #1
Hello, maintainers.

If you are available, please review this patch and share the feedback.

Thanks,
Austin Kim

2019년 9월 3일 (화) 오후 12:30, Austin Kim <austindh.kim@gmail.com>님이 작성:
>
> gcc throws warning message as below:
>
> ‘clone_src_i_size’ may be used uninitialized in this function
> [-Wmaybe-uninitialized]
>  #define IS_ALIGNED(x, a)  (((x) & ((typeof(x))(a) - 1)) == 0)
>                        ^
> fs/btrfs/send.c:5088:6: note: ‘clone_src_i_size’ was declared here
>  u64 clone_src_i_size;
>    ^
> The clone_src_i_size is only used as call-by-reference
> in a call to get_inode_info().
>
> Silence the warning by initializing clone_src_i_size to 0.
>
> Signed-off-by: Austin Kim <austindh.kim@gmail.com>
> ---
>  fs/btrfs/send.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
> index f856d6c..197536b 100644
> --- a/fs/btrfs/send.c
> +++ b/fs/btrfs/send.c
> @@ -5085,7 +5085,7 @@ static int clone_range(struct send_ctx *sctx,
>         struct btrfs_path *path;
>         struct btrfs_key key;
>         int ret;
> -       u64 clone_src_i_size;
> +       u64 clone_src_i_size = 0;
>
>         /*
>          * Prevent cloning from a zero offset with a length matching the sector
> --
> 2.6.2
>
David Sterba Sept. 17, 2019, 10:12 a.m. UTC | #2
On Tue, Sep 03, 2019 at 12:30:19PM +0900, Austin Kim wrote:
> gcc throws warning message as below:

What version of gcc reports that? 9.2.1 does not.

> ‘clone_src_i_size’ may be used uninitialized in this function
> [-Wmaybe-uninitialized]
>  #define IS_ALIGNED(x, a)  (((x) & ((typeof(x))(a) - 1)) == 0)
>                        ^
> fs/btrfs/send.c:5088:6: note: ‘clone_src_i_size’ was declared here
>  u64 clone_src_i_size;
>    ^
> The clone_src_i_size is only used as call-by-reference
> in a call to get_inode_info().

The reference is passed to a static function, so the compiler has enough
information to determine if it's unused. By inspection I don't see a
problem with the uninitalized variable: if __get_inode_info succeeds,
there's a valid value, in error case it's not used at all.
David Sterba Oct. 7, 2019, 3:03 p.m. UTC | #3
On Tue, Sep 03, 2019 at 12:30:19PM +0900, Austin Kim wrote:
> gcc throws warning message as below:
> 
> ‘clone_src_i_size’ may be used uninitialized in this function
> [-Wmaybe-uninitialized]
>  #define IS_ALIGNED(x, a)  (((x) & ((typeof(x))(a) - 1)) == 0)
>                        ^
> fs/btrfs/send.c:5088:6: note: ‘clone_src_i_size’ was declared here
>  u64 clone_src_i_size;
>    ^
> The clone_src_i_size is only used as call-by-reference
> in a call to get_inode_info().
> 
> Silence the warning by initializing clone_src_i_size to 0.
> 
> Signed-off-by: Austin Kim <austindh.kim@gmail.com>

A few more people have repoted this warning, so I'm gonig to apply the
patch to avoid further reports. Thanks.

Patch
diff mbox series

diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
index f856d6c..197536b 100644
--- a/fs/btrfs/send.c
+++ b/fs/btrfs/send.c
@@ -5085,7 +5085,7 @@  static int clone_range(struct send_ctx *sctx,
 	struct btrfs_path *path;
 	struct btrfs_key key;
 	int ret;
-	u64 clone_src_i_size;
+	u64 clone_src_i_size = 0;
 
 	/*
 	 * Prevent cloning from a zero offset with a length matching the sector