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 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 SUSE Labs, CR