ipvs: Pass ipvs not net into [un]register_ip_vs_proto_netns

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Acked-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Simon Horman <horms@verge.net.au>
This commit is contained in:
Eric W. Biederman 2015-09-21 13:02:35 -05:00 committed by Simon Horman
parent b5dd212cc1
commit c70bd6800a

View file

@ -63,9 +63,8 @@ static int __used __init register_ip_vs_protocol(struct ip_vs_protocol *pp)
* register an ipvs protocols netns related data * register an ipvs protocols netns related data
*/ */
static int static int
register_ip_vs_proto_netns(struct net *net, struct ip_vs_protocol *pp) register_ip_vs_proto_netns(struct netns_ipvs *ipvs, struct ip_vs_protocol *pp)
{ {
struct netns_ipvs *ipvs = net_ipvs(net);
unsigned int hash = IP_VS_PROTO_HASH(pp->protocol); unsigned int hash = IP_VS_PROTO_HASH(pp->protocol);
struct ip_vs_proto_data *pd = struct ip_vs_proto_data *pd =
kzalloc(sizeof(struct ip_vs_proto_data), GFP_KERNEL); kzalloc(sizeof(struct ip_vs_proto_data), GFP_KERNEL);
@ -79,7 +78,7 @@ register_ip_vs_proto_netns(struct net *net, struct ip_vs_protocol *pp)
atomic_set(&pd->appcnt, 0); /* Init app counter */ atomic_set(&pd->appcnt, 0); /* Init app counter */
if (pp->init_netns != NULL) { if (pp->init_netns != NULL) {
int ret = pp->init_netns(net, pd); int ret = pp->init_netns(ipvs->net, pd);
if (ret) { if (ret) {
/* unlink an free proto data */ /* unlink an free proto data */
ipvs->proto_data_table[hash] = pd->next; ipvs->proto_data_table[hash] = pd->next;
@ -116,9 +115,8 @@ static int unregister_ip_vs_protocol(struct ip_vs_protocol *pp)
* unregister an ipvs protocols netns data * unregister an ipvs protocols netns data
*/ */
static int static int
unregister_ip_vs_proto_netns(struct net *net, struct ip_vs_proto_data *pd) unregister_ip_vs_proto_netns(struct netns_ipvs *ipvs, struct ip_vs_proto_data *pd)
{ {
struct netns_ipvs *ipvs = net_ipvs(net);
struct ip_vs_proto_data **pd_p; struct ip_vs_proto_data **pd_p;
unsigned int hash = IP_VS_PROTO_HASH(pd->pp->protocol); unsigned int hash = IP_VS_PROTO_HASH(pd->pp->protocol);
@ -127,7 +125,7 @@ unregister_ip_vs_proto_netns(struct net *net, struct ip_vs_proto_data *pd)
if (*pd_p == pd) { if (*pd_p == pd) {
*pd_p = pd->next; *pd_p = pd->next;
if (pd->pp->exit_netns != NULL) if (pd->pp->exit_netns != NULL)
pd->pp->exit_netns(net, pd); pd->pp->exit_netns(ipvs->net, pd);
kfree(pd); kfree(pd);
return 0; return 0;
} }
@ -329,9 +327,10 @@ int __net_init ip_vs_protocol_net_init(struct net *net)
&ip_vs_protocol_esp, &ip_vs_protocol_esp,
#endif #endif
}; };
struct netns_ipvs *ipvs = net_ipvs(net);
for (i = 0; i < ARRAY_SIZE(protos); i++) { for (i = 0; i < ARRAY_SIZE(protos); i++) {
ret = register_ip_vs_proto_netns(net, protos[i]); ret = register_ip_vs_proto_netns(ipvs, protos[i]);
if (ret < 0) if (ret < 0)
goto cleanup; goto cleanup;
} }
@ -351,7 +350,7 @@ void __net_exit ip_vs_protocol_net_cleanup(struct net *net)
/* unregister all the ipvs proto data for this netns */ /* unregister all the ipvs proto data for this netns */
for (i = 0; i < IP_VS_PROTO_TAB_SIZE; i++) { for (i = 0; i < IP_VS_PROTO_TAB_SIZE; i++) {
while ((pd = ipvs->proto_data_table[i]) != NULL) while ((pd = ipvs->proto_data_table[i]) != NULL)
unregister_ip_vs_proto_netns(net, pd); unregister_ip_vs_proto_netns(ipvs, pd);
} }
} }