]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
vxlan: fix incorrect initializer in union vxlan_addr
authorGerhard Stenzel <gstenzel@linux.vnet.ibm.com>
Fri, 22 Aug 2014 19:34:16 +0000 (21:34 +0200)
committerJiri Slaby <jslaby@suse.cz>
Fri, 17 Oct 2014 07:43:13 +0000 (09:43 +0200)
commitbfe32d547264afb5d989d4890249326ba8ce5933
treed9fa8367909f8b9ab52de496eae52e4f5d19c4f1
parentddc07cc3af29477df691ed5d87a52c867c0f9b23
vxlan: fix incorrect initializer in union vxlan_addr

[ Upstream commit a45e92a599e77ee6a850eabdd0141633fde03915 ]

The first initializer in the following

        union vxlan_addr ipa = {
            .sin.sin_addr.s_addr = tip,
            .sa.sa_family = AF_INET,
        };

is optimised away by the compiler, due to the second initializer,
therefore initialising .sin.sin_addr.s_addr always to 0.
This results in netlink messages indicating a L3 miss never contain the
missed IP address. This was observed with GCC 4.8 and 4.9. I do not know about previous versions.
The problem affects user space programs relying on an IP address being
sent as part of a netlink message indicating a L3 miss.

Changing
            .sa.sa_family = AF_INET,
to
            .sin.sin_family = AF_INET,
fixes the problem.

Signed-off-by: Gerhard Stenzel <gerhard.stenzel@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
drivers/net/vxlan.c