2015-02-18 10:38:14

by Geert Uytterhoeven

[permalink] [raw]
Subject: [PATCH] net: Initialize all members in skb_gro_remcsum_init()

skb_gro_remcsum_init() initializes the gro_remcsum.delta member only,
leading to compiler warnings about a possibly uninitialized
gro_remcsum.offset member:

drivers/net/vxlan.c: In function ‘vxlan_gro_receive’:
drivers/net/vxlan.c:602: warning: ‘grc.offset’ may be used uninitialized in this function
net/ipv4/fou.c: In function ‘gue_gro_receive’:
net/ipv4/fou.c:262: warning: ‘grc.offset’ may be used uninitialized in this function

While these are harmless for now:
- skb_gro_remcsum_process() sets offset before changing delta,
- skb_gro_remcsum_cleanup() checks if delta is non-zero before
accessing offset,
it's safer to let the initialization function initialize all members.

Signed-off-by: Geert Uytterhoeven <[email protected]>
---
include/linux/netdevice.h | 1 +
1 file changed, 1 insertion(+)

diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 5897b4ea5a3f9e0f..429d1790a27e85f3 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -2342,6 +2342,7 @@ struct gro_remcsum {

static inline void skb_gro_remcsum_init(struct gro_remcsum *grc)
{
+ grc->offset = 0;
grc->delta = 0;
}

--
1.9.1


2015-02-18 15:28:10

by Tom Herbert

[permalink] [raw]
Subject: Re: [PATCH] net: Initialize all members in skb_gro_remcsum_init()

On Wed, Feb 18, 2015 at 2:38 AM, Geert Uytterhoeven
<[email protected]> wrote:
> skb_gro_remcsum_init() initializes the gro_remcsum.delta member only,
> leading to compiler warnings about a possibly uninitialized
> gro_remcsum.offset member:
>
> drivers/net/vxlan.c: In function ‘vxlan_gro_receive’:
> drivers/net/vxlan.c:602: warning: ‘grc.offset’ may be used uninitialized in this function
> net/ipv4/fou.c: In function ‘gue_gro_receive’:
> net/ipv4/fou.c:262: warning: ‘grc.offset’ may be used uninitialized in this function
>
> While these are harmless for now:
> - skb_gro_remcsum_process() sets offset before changing delta,
> - skb_gro_remcsum_cleanup() checks if delta is non-zero before
> accessing offset,
> it's safer to let the initialization function initialize all members.
>

Acked-by: Tom Herbert <[email protected]>

> Signed-off-by: Geert Uytterhoeven <[email protected]>
> ---
> include/linux/netdevice.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
> index 5897b4ea5a3f9e0f..429d1790a27e85f3 100644
> --- a/include/linux/netdevice.h
> +++ b/include/linux/netdevice.h
> @@ -2342,6 +2342,7 @@ struct gro_remcsum {
>
> static inline void skb_gro_remcsum_init(struct gro_remcsum *grc)
> {
> + grc->offset = 0;
> grc->delta = 0;
> }
>
> --
> 1.9.1
>

2015-02-20 20:50:12

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] net: Initialize all members in skb_gro_remcsum_init()

From: Geert Uytterhoeven <[email protected]>
Date: Wed, 18 Feb 2015 11:38:06 +0100

> skb_gro_remcsum_init() initializes the gro_remcsum.delta member only,
> leading to compiler warnings about a possibly uninitialized
> gro_remcsum.offset member:
>
> drivers/net/vxlan.c: In function ?vxlan_gro_receive?:
> drivers/net/vxlan.c:602: warning: ?grc.offset? may be used uninitialized in this function
> net/ipv4/fou.c: In function ?gue_gro_receive?:
> net/ipv4/fou.c:262: warning: ?grc.offset? may be used uninitialized in this function
>
> While these are harmless for now:
> - skb_gro_remcsum_process() sets offset before changing delta,
> - skb_gro_remcsum_cleanup() checks if delta is non-zero before
> accessing offset,
> it's safer to let the initialization function initialize all members.
>
> Signed-off-by: Geert Uytterhoeven <[email protected]>

Applied, thank you.
????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?