Patch "netfilter: ipset: Fixing unnamed union init" has been added to the 4.1-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
netfilter: ipset: Fixing unnamed union init
to the 4.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
netfilter-ipset-fixing-unnamed-union-init.patch
and it can be found in the queue-4.1 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
96be5f2806cd65a2ebced3bfcdf7df0116e6c4a6Mon Sep 17 00:00:00 2001
From: Elad Raz <[email protected]>
Date: Sat, 22 Aug 2015 08:44:11 +0300
Subject: netfilter: ipset: Fixing unnamed union init
From: Elad Raz <[email protected]>
commit 96be5f2806cd65a2ebced3bfcdf7df0116e6c4a6 upstream.
In continue to proposed Vinson Lee's post [1], this patch fixes compilation issues founded at gcc 4.4.7. The initialization of .cidr field of unnamed unions causes compilation error in gcc 4.4.x.
References
Visible links
[1] https://lkml.org/lkml/2015/7/5/74
net/netfilter/ipset/ip_set_hash_netnet.c +18 -2
@@ -131,6 +131,13 @@ hash_netnet4_data_next(struct hash_netnet4_elem *next,#define HOST_MASK 32#include "ip_set_hash_gen.h" +static void +hash_netnet4_init (struct hash_netnet4_elem *e) +{ + e->cidr[0 ] =HOST_MASK ; + e->cidr[1 ] =HOST_MASK ; +} + static int hash_netnet4_kadt(struct ip_set *set, const struct sk_buff *skb, const struct xt_action_param *par,
@@ -160,7 +167,7 @@ hash_netnet4_uadt(struct ip_set *set, struct nlattr *tb[], {const struct hash_netnet *h = set->data;ipset_adtfn adtfn = set->variant->adt[adt]; -struct hash_netnet4_elem e = { .cidr = {HOST_MASK ,HOST_MASK , }, }; +struct hash_netnet4_elem e = { };struct ip_set_ext ext =IP_SET_INIT_UEXT (set);u32 ip =0 , ip_to =0 , last;u32 ip2 =0 , ip2_from =0 , ip2_to =0 , last2;
@@ -169,6 +176,7 @@ hash_netnet4_uadt(struct ip_set *set, struct nlattr *tb[],if (tb[IPSET_ATTR_LINENO ]) *lineno =nla_get_u32 (tb[IPSET_ATTR_LINENO ]); +hash_netnet4_init (&e);if (unlikely (!tb[IPSET_ATTR_IP ] || !tb[IPSET_ATTR_IP2 ] || !ip_set_optattr_netorder (tb,IPSET_ATTR_CADT_FLAGS )))return -IPSET_ERR_PROTOCOL ;
@@ -357,6 +365,13 @@ hash_netnet6_data_next(struct hash_netnet4_elem *next,#define IP_SET_EMIT_CREATE #include "ip_set_hash_gen.h" +static void +hash_netnet6_init (struct hash_netnet6_elem *e) +{ + e->cidr[0 ] =HOST_MASK ; + e->cidr[1 ] =HOST_MASK ; +} + static int hash_netnet6_kadt(struct ip_set *set, const struct sk_buff *skb, const struct xt_action_param *par,
@@ -385,13 +400,14 @@ hash_netnet6_uadt(struct ip_set *set, struct nlattr *tb[], enum ipset_adt adt, u32 *lineno, u32 flags, bool retried) { ipset_adtfn adtfn = set->variant->adt[adt]; -struct hash_netnet6_elem e = { .cidr = {HOST_MASK ,HOST_MASK , }, }; +struct hash_netnet6_elem e = { };struct ip_set_ext ext =IP_SET_INIT_UEXT (set);int ret;if (tb[IPSET_ATTR_LINENO ]) *lineno =nla_get_u32 (tb[IPSET_ATTR_LINENO ]); +hash_netnet6_init (&e);if (unlikely (!tb[IPSET_ATTR_IP ] || !tb[IPSET_ATTR_IP2 ] || !ip_set_optattr_netorder (tb,IPSET_ATTR_CADT_FLAGS )))return -IPSET_ERR_PROTOCOL ;
net/netfilter/ipset/ip_set_hash_netportnet.c +18 -2
@@ -142,6 +142,13 @@ hash_netportnet4_data_next(struct hash_netportnet4_elem *next,#define HOST_MASK 32#include "ip_set_hash_gen.h" +static void +hash_netportnet4_init (struct hash_netportnet4_elem *e) +{ + e->cidr[0 ] =HOST_MASK ; + e->cidr[1 ] =HOST_MASK ; +} + static int hash_netportnet4_kadt(struct ip_set *set, const struct sk_buff *skb, const struct xt_action_param *par,
@@ -175,7 +182,7 @@ hash_netportnet4_uadt(struct ip_set *set, struct nlattr *tb[], {const struct hash_netportnet *h = set->data;ipset_adtfn adtfn = set->variant->adt[adt]; -struct hash_netportnet4_elem e = { .cidr = {HOST_MASK ,HOST_MASK , }, }; +struct hash_netportnet4_elem e = { };struct ip_set_ext ext =IP_SET_INIT_UEXT (set);u32 ip =0 , ip_to =0 , ip_last, p =0 , port, port_to;u32 ip2_from =0 , ip2_to =0 , ip2_last, ip2;
@@ -185,6 +192,7 @@ hash_netportnet4_uadt(struct ip_set *set, struct nlattr *tb[],if (tb[IPSET_ATTR_LINENO ]) *lineno =nla_get_u32 (tb[IPSET_ATTR_LINENO ]); +hash_netportnet4_init (&e); if (unlikely(!tb[IPSET_ATTR_IP] || !tb[IPSET_ATTR_IP2] || !ip_set_attr_netorder(tb, IPSET_ATTR_PORT) || !ip_set_optattr_netorder(tb, IPSET_ATTR_PORT_TO) ||
@@ -412,6 +420,13 @@ hash_netportnet6_data_next(struct hash_netportnet4_elem *next,#define IP_SET_EMIT_CREATE #include "ip_set_hash_gen.h" +static void +hash_netportnet6_init (struct hash_netportnet6_elem *e) +{ + e->cidr[0 ] =HOST_MASK ; + e->cidr[1 ] =HOST_MASK ; +} + static int hash_netportnet6_kadt(struct ip_set *set, const struct sk_buff *skb, const struct xt_action_param *par,
@@ -445,7 +460,7 @@ hash_netportnet6_uadt(struct ip_set *set, struct nlattr *tb[], {const struct hash_netportnet *h = set->data;ipset_adtfn adtfn = set->variant->adt[adt]; -struct hash_netportnet6_elem e = { .cidr = {HOST_MASK ,HOST_MASK , }, }; +struct hash_netportnet6_elem e = { };struct ip_set_ext ext =IP_SET_INIT_UEXT (set);u32 port, port_to;bool with_ports = false;
@@ -454,6 +469,7 @@ hash_netportnet6_uadt(struct ip_set *set, struct nlattr *tb[],if (tb[IPSET_ATTR_LINENO ]) *lineno =nla_get_u32 (tb[IPSET_ATTR_LINENO ]); +hash_netportnet6_init (&e); if (unlikely(!tb[IPSET_ATTR_IP] || !tb[IPSET_ATTR_IP2] || !ip_set_attr_netorder(tb, IPSET_ATTR_PORT) || !ip_set_optattr_netorder(tb, IPSET_ATTR_PORT_TO) ||
Patches currently in stable-queue which might be from [email protected] are
queue-4.1/netfilter-ipset-fixing-unnamed-union-init.patch