Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1607781
| 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 |
[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 | Next — Previous in thread | Find similar | Unroll 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