diff options
author | Simon Horman <horms@verge.net.au> | 2010-08-22 08:37:52 -0400 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2010-10-04 09:45:24 -0400 |
commit | 2fabf35bfcd89445c54cf1e6a5437dd3cf924a92 (patch) | |
tree | ac44075362b3b17d25f841c50622c0603fc2d3c8 | |
parent | 6e08bfb879574524cc9a67be960c684989fd986c (diff) |
IPVS: ip_vs_{un,}bind_scheduler NULL arguments
In general NULL arguments aren't passed by the few callers that exist,
so don't test for them.
The exception is to make passing NULL to ip_vs_unbind_scheduler() a noop.
Signed-off-by: Simon Horman <horms@verge.net.au>
Acked-by: Julian Anastasov <ja@ssi.bg>
-rw-r--r-- | net/netfilter/ipvs/ip_vs_ctl.c | 3 | ||||
-rw-r--r-- | net/netfilter/ipvs/ip_vs_sched.c | 23 |
2 files changed, 4 insertions, 22 deletions
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c index f7afcfe4dbc5..5f20caf47a1d 100644 --- a/net/netfilter/ipvs/ip_vs_ctl.c +++ b/net/netfilter/ipvs/ip_vs_ctl.c | |||
@@ -1206,8 +1206,7 @@ ip_vs_add_service(struct ip_vs_service_user_kern *u, | |||
1206 | 1206 | ||
1207 | out_err: | 1207 | out_err: |
1208 | if (svc != NULL) { | 1208 | if (svc != NULL) { |
1209 | if (svc->scheduler) | 1209 | ip_vs_unbind_scheduler(svc); |
1210 | ip_vs_unbind_scheduler(svc); | ||
1211 | if (svc->inc) { | 1210 | if (svc->inc) { |
1212 | local_bh_disable(); | 1211 | local_bh_disable(); |
1213 | ip_vs_app_inc_put(svc->inc); | 1212 | ip_vs_app_inc_put(svc->inc); |
diff --git a/net/netfilter/ipvs/ip_vs_sched.c b/net/netfilter/ipvs/ip_vs_sched.c index 9f94e328d31e..076ebe00435d 100644 --- a/net/netfilter/ipvs/ip_vs_sched.c +++ b/net/netfilter/ipvs/ip_vs_sched.c | |||
@@ -46,15 +46,6 @@ int ip_vs_bind_scheduler(struct ip_vs_service *svc, | |||
46 | { | 46 | { |
47 | int ret; | 47 | int ret; |
48 | 48 | ||
49 | if (svc == NULL) { | ||
50 | pr_err("%s(): svc arg NULL\n", __func__); | ||
51 | return -EINVAL; | ||
52 | } | ||
53 | if (scheduler == NULL) { | ||
54 | pr_err("%s(): scheduler arg NULL\n", __func__); | ||
55 | return -EINVAL; | ||
56 | } | ||
57 | |||
58 | svc->scheduler = scheduler; | 49 | svc->scheduler = scheduler; |
59 | 50 | ||
60 | if (scheduler->init_service) { | 51 | if (scheduler->init_service) { |
@@ -74,18 +65,10 @@ int ip_vs_bind_scheduler(struct ip_vs_service *svc, | |||
74 | */ | 65 | */ |
75 | int ip_vs_unbind_scheduler(struct ip_vs_service *svc) | 66 | int ip_vs_unbind_scheduler(struct ip_vs_service *svc) |
76 | { | 67 | { |
77 | struct ip_vs_scheduler *sched; | 68 | struct ip_vs_scheduler *sched = svc->scheduler; |
78 | 69 | ||
79 | if (svc == NULL) { | 70 | if (!sched) |
80 | pr_err("%s(): svc arg NULL\n", __func__); | 71 | return 0; |
81 | return -EINVAL; | ||
82 | } | ||
83 | |||
84 | sched = svc->scheduler; | ||
85 | if (sched == NULL) { | ||
86 | pr_err("%s(): svc isn't bound\n", __func__); | ||
87 | return -EINVAL; | ||
88 | } | ||
89 | 72 | ||
90 | if (sched->done_service) { | 73 | if (sched->done_service) { |
91 | if (sched->done_service(svc) != 0) { | 74 | if (sched->done_service(svc) != 0) { |