lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20170323182551.GA32502@quack2.suse.cz>
Date:   Thu, 23 Mar 2017 19:25:51 +0100
From:   Jan Kara <jack@...e.cz>
To:     Arnd Bergmann <arnd@...db.de>
Cc:     Andrew Morton <akpm@...ux-foundation.org>, Jan Kara <jack@...e.cz>,
        reiserfs-devel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] reiserfs: avoid a -Wmaybe-uninitialized warning

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@...db.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@...e.com>
SUSE Labs, CR

View attachment "0001-reiserfs-avoid-a-Wmaybe-uninitialized-warning.patch" of type "text/x-patch" (2423 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ