Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1607781

Re: [PATCH] reiserfs: avoid a -Wmaybe-uninitialized warning

From Jan Kara <jack@suse.cz>
Newsgroups linux.kernel
Subject Re: [PATCH] reiserfs: avoid a -Wmaybe-uninitialized warning
Date 2017-03-23 19:30 +0100
Message-ID <tofEK-666-29@gated-at.bofh.it> (permalink)
References <tocxc-3SR-35@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


[Multipart message — attachments visible in raw view] - view raw

On Thu 23-03-17 16:06:13, Arnd Bergmann wrote:
> The latest gcc-7.0.1 snapshot warns about an unintialized variable use:
> 
> In file included from fs/reiserfs/lbalance.c:8:0:
> fs/reiserfs/lbalance.c: In function 'leaf_item_bottle.isra.3':
> fs/reiserfs/reiserfs.h:1279:13: error: '*((void *)&n_ih+8).v' may be used uninitialized in this function [-Werror=maybe-uninitialized]
>   v2->v = (v2->v & cpu_to_le64(15ULL << 60)) | cpu_to_le64(offset);
>            ~~^~~
> fs/reiserfs/reiserfs.h:1279:13: error: '*((void *)&n_ih+8).v' may be used uninitialized in this function [-Werror=maybe-uninitialized]
>   v2->v = (v2->v & cpu_to_le64(15ULL << 60)) | cpu_to_le64(offset);
> 
> This happens because the offset/type pair that is stored in
> ih.key.u.k_offset_v2 is actually uninitialized when we call
> set_le_ih_k_offset() and set_le_ih_k_type(). After we have called both,
> all data is correct, but the first of the two reads uninitialized data
> for the type field and writes it back before it gets overwritten.
> 
> This works around the warning by initializing the k_offset_v2 through
> the slightly larger memcpy().
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Thanks. I've queued up slightly updated patch (attached).

								Honza

> ---
>  fs/reiserfs/lbalance.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/reiserfs/lbalance.c b/fs/reiserfs/lbalance.c
> index 249594a821e0..8eed8f5f6881 100644
> --- a/fs/reiserfs/lbalance.c
> +++ b/fs/reiserfs/lbalance.c
> @@ -475,7 +475,7 @@ static void leaf_item_bottle(struct buffer_info *dest_bi,
>  			 * 'cpy_bytes'; create new item header;
>  			 * n_ih = new item_header;
>  			 */
> -			memcpy(&n_ih, ih, SHORT_KEY_SIZE);
> +			memcpy(&n_ih, ih, KEY_SIZE);
>  
>  			/* Endian safe, both le */
>  			n_ih.ih_version = ih->ih_version;
> -- 
> 2.9.0
> 
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR

Back to linux.kernel | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

[PATCH] reiserfs: avoid a -Wmaybe-uninitialized warning Arnd Bergmann <arnd@arndb.de> - 2017-03-23 16:10 +0100
  Re: [PATCH] reiserfs: avoid a -Wmaybe-uninitialized warning Jan Kara <jack@suse.cz> - 2017-03-23 19:30 +0100

csiph-web