Переглянути джерело

[NETFILTER]: x_tables: small check_entry & module_refcount cleanup

While standard_target has target->me == NULL, module_put() should be
called for it as for others, because there were try_module_get() before.

Signed-off-by: Dmitry Mishin <dim@openvz.org>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Dmitry Mishin 18 роки тому
батько
коміт
90d47db4a0

+ 1 - 1
net/ipv4/netfilter/arp_tables.c

@@ -485,7 +485,7 @@ static inline int check_entry(struct arpt_entry *e, const char *name, unsigned i
 	if (t->u.kernel.target == &arpt_standard_target) {
 	if (t->u.kernel.target == &arpt_standard_target) {
 		if (!standard_check(t, size)) {
 		if (!standard_check(t, size)) {
 			ret = -EINVAL;
 			ret = -EINVAL;
-			goto out;
+			goto err;
 		}
 		}
 	} else if (t->u.kernel.target->checkentry
 	} else if (t->u.kernel.target->checkentry
 		   && !t->u.kernel.target->checkentry(name, e, target, t->data,
 		   && !t->u.kernel.target->checkentry(name, e, target, t->data,

+ 1 - 1
net/ipv4/netfilter/ip_tables.c

@@ -573,7 +573,7 @@ check_entry(struct ipt_entry *e, const char *name, unsigned int size,
 	if (t->u.kernel.target == &ipt_standard_target) {
 	if (t->u.kernel.target == &ipt_standard_target) {
 		if (!standard_check(t, size)) {
 		if (!standard_check(t, size)) {
 			ret = -EINVAL;
 			ret = -EINVAL;
-			goto cleanup_matches;
+			goto err;
 		}
 		}
 	} else if (t->u.kernel.target->checkentry
 	} else if (t->u.kernel.target->checkentry
 		   && !t->u.kernel.target->checkentry(name, e, target, t->data,
 		   && !t->u.kernel.target->checkentry(name, e, target, t->data,

+ 1 - 1
net/ipv6/netfilter/ip6_tables.c

@@ -610,7 +610,7 @@ check_entry(struct ip6t_entry *e, const char *name, unsigned int size,
 	if (t->u.kernel.target == &ip6t_standard_target) {
 	if (t->u.kernel.target == &ip6t_standard_target) {
 		if (!standard_check(t, size)) {
 		if (!standard_check(t, size)) {
 			ret = -EINVAL;
 			ret = -EINVAL;
-			goto cleanup_matches;
+			goto err;
 		}
 		}
 	} else if (t->u.kernel.target->checkentry
 	} else if (t->u.kernel.target->checkentry
 		   && !t->u.kernel.target->checkentry(name, e, target, t->data,
 		   && !t->u.kernel.target->checkentry(name, e, target, t->data,