diff options
author | Julia Lawall <Julia.Lawall@lip6.fr> | 2012-08-29 06:49:11 +0000 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2012-08-30 03:27:19 +0200 |
commit | 0a54e939d8c2647c711ef2369c3e73c3b7f3028c (patch) | |
tree | d75d6a88fdadcadd9f9999f0be42095c3444d178 /net/netfilter/ipvs | |
parent | 2dba62c30ec3040ef1b647a8976fd7e6854cc7a7 (diff) | |
download | linux-0a54e939d8c2647c711ef2369c3e73c3b7f3028c.tar.gz linux-0a54e939d8c2647c711ef2369c3e73c3b7f3028c.tar.bz2 linux-0a54e939d8c2647c711ef2369c3e73c3b7f3028c.zip |
ipvs: fix error return code
Initialize return variable before exiting on an error path.
A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
(
if@p1 (\(ret < 0\|ret != 0\))
{ ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
when != &ret
*if(...)
{
... when != ret = e2
when forall
return ret;
}
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Acked-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net/netfilter/ipvs')
-rw-r--r-- | net/netfilter/ipvs/ip_vs_ctl.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c index 72bf32a84874..f51013c07b9f 100644 --- a/net/netfilter/ipvs/ip_vs_ctl.c +++ b/net/netfilter/ipvs/ip_vs_ctl.c @@ -1171,8 +1171,10 @@ ip_vs_add_service(struct net *net, struct ip_vs_service_user_kern *u, goto out_err; } svc->stats.cpustats = alloc_percpu(struct ip_vs_cpu_stats); - if (!svc->stats.cpustats) + if (!svc->stats.cpustats) { + ret = -ENOMEM; goto out_err; + } /* I'm the first user of the service */ atomic_set(&svc->usecnt, 0); |