diff options
-rw-r--r-- | net/netfilter/ipvs/ip_vs_ctl.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c index 0f0c079c422a..53a88af22503 100644 --- a/net/netfilter/ipvs/ip_vs_ctl.c +++ b/net/netfilter/ipvs/ip_vs_ctl.c | |||
@@ -2155,7 +2155,7 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, void __user *user, unsigned int len) | |||
2155 | if (cmd != IP_VS_SO_SET_ADD | 2155 | if (cmd != IP_VS_SO_SET_ADD |
2156 | && (svc == NULL || svc->protocol != usvc.protocol)) { | 2156 | && (svc == NULL || svc->protocol != usvc.protocol)) { |
2157 | ret = -ESRCH; | 2157 | ret = -ESRCH; |
2158 | goto out_unlock; | 2158 | goto out_drop_service; |
2159 | } | 2159 | } |
2160 | 2160 | ||
2161 | switch (cmd) { | 2161 | switch (cmd) { |
@@ -2189,6 +2189,7 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, void __user *user, unsigned int len) | |||
2189 | ret = -EINVAL; | 2189 | ret = -EINVAL; |
2190 | } | 2190 | } |
2191 | 2191 | ||
2192 | out_drop_service: | ||
2192 | if (svc) | 2193 | if (svc) |
2193 | ip_vs_service_put(svc); | 2194 | ip_vs_service_put(svc); |
2194 | 2195 | ||