|
@@ -2155,7 +2155,7 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, void __user *user, unsigned int len)
|
|
if (cmd != IP_VS_SO_SET_ADD
|
|
if (cmd != IP_VS_SO_SET_ADD
|
|
&& (svc == NULL || svc->protocol != usvc.protocol)) {
|
|
&& (svc == NULL || svc->protocol != usvc.protocol)) {
|
|
ret = -ESRCH;
|
|
ret = -ESRCH;
|
|
- goto out_unlock;
|
|
|
|
|
|
+ goto out_drop_service;
|
|
}
|
|
}
|
|
|
|
|
|
switch (cmd) {
|
|
switch (cmd) {
|
|
@@ -2189,6 +2189,7 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, void __user *user, unsigned int len)
|
|
ret = -EINVAL;
|
|
ret = -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+out_drop_service:
|
|
if (svc)
|
|
if (svc)
|
|
ip_vs_service_put(svc);
|
|
ip_vs_service_put(svc);
|
|
|
|
|