* check_entry & module_refcount
@ 2006-09-04 12:17 Dmitry Mishin
2006-09-04 13:40 ` Patrick McHardy
2006-09-06 1:24 ` Yasuyuki KOZAKAI
0 siblings, 2 replies; 6+ messages in thread
From: Dmitry Mishin @ 2006-09-04 12:17 UTC (permalink / raw)
To: netfilter-devel
Hello, all!
Does anybody know why there is no module_put() on the error way after failed
standard_check() call in the check_entry() function? Previous xt_find_target()
calls try_module_get() for all targets, without special checks for
standard_target.
If it is a bug, patch over net-2.6.19 is below.
Signed-off-by: Dmitry Mishin <dim@openvz.org>
--
ip_tables.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- ./net/ipv4/netfilter/ip_tables.c.err 2006-08-30 13:12:13.000000000 +0400
+++ ./net/ipv4/netfilter/ip_tables.c 2006-09-04 16:01:11.000000000 +0400
@@ -573,7 +573,7 @@
if (t->u.kernel.target == &ipt_standard_target) {
if (!standard_check(t, size)) {
ret = -EINVAL;
- goto cleanup_matches;
+ goto err;
}
} else if (t->u.kernel.target->checkentry
&& !t->u.kernel.target->checkentry(name, e, target, t->data,
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: check_entry & module_refcount 2006-09-04 12:17 check_entry & module_refcount Dmitry Mishin @ 2006-09-04 13:40 ` Patrick McHardy 2006-09-06 1:24 ` Yasuyuki KOZAKAI 1 sibling, 0 replies; 6+ messages in thread From: Patrick McHardy @ 2006-09-04 13:40 UTC (permalink / raw) To: Dmitry Mishin; +Cc: netfilter-devel Dmitry Mishin wrote: > Hello, all! > > Does anybody know why there is no module_put() on the error way after failed > standard_check() call in the check_entry() function? Previous xt_find_target() > calls try_module_get() for all targets, without special checks for > standard_target. The standard target doesn't have a module reference, so the counter isn't really increased. While rules are present the tables have references to ip_tables anyway, so its not needed. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: check_entry & module_refcount 2006-09-04 12:17 check_entry & module_refcount Dmitry Mishin 2006-09-04 13:40 ` Patrick McHardy @ 2006-09-06 1:24 ` Yasuyuki KOZAKAI 2006-09-06 18:23 ` Patrick McHardy 1 sibling, 1 reply; 6+ messages in thread From: Yasuyuki KOZAKAI @ 2006-09-06 1:24 UTC (permalink / raw) To: dim; +Cc: netfilter-devel Hello, From: Dmitry Mishin <dim@openvz.org> Date: Mon, 4 Sep 2006 16:17:39 +0400 > Hello, all! > > Does anybody know why there is no module_put() on the error way after failed > standard_check() call in the check_entry() function? Previous xt_find_target() > calls try_module_get() for all targets, without special checks for > standard_target. standard target is build in ip_tables.ko which has check_entry(), and check_entry() cannot fail to get the module. Then we doesn't set standard_target.me and try_module_{get,put}() do nothing as result. I think, the author thought that there is no necessary to call module_put() there. > If it is a bug, patch over net-2.6.19 is below. This is not bug but cleanup. try_get_module() is called anyway, so calling put_module() on error is logically good, I think. BTW, This can apply to ip6_tables and arp_tables, too. -- Yasuyuki Kozakai ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: check_entry & module_refcount 2006-09-06 1:24 ` Yasuyuki KOZAKAI @ 2006-09-06 18:23 ` Patrick McHardy 2006-09-07 10:08 ` small check_entry & module_refcount cleanup Dmitry Mishin 0 siblings, 1 reply; 6+ messages in thread From: Patrick McHardy @ 2006-09-06 18:23 UTC (permalink / raw) To: Yasuyuki KOZAKAI; +Cc: dim, netfilter-devel Yasuyuki KOZAKAI wrote: > Hello, > > From: Dmitry Mishin <dim@openvz.org> > Date: Mon, 4 Sep 2006 16:17:39 +0400 > >>If it is a bug, patch over net-2.6.19 is below. > > > This is not bug but cleanup. try_get_module() is called anyway, so calling > put_module() on error is logically good, I think. Agreed. Dmitry, you can send a patch which changes this for ip6_tables and arp_tables as well? ^ permalink raw reply [flat|nested] 6+ messages in thread
* small check_entry & module_refcount cleanup 2006-09-06 18:23 ` Patrick McHardy @ 2006-09-07 10:08 ` Dmitry Mishin 2006-09-07 15:02 ` Patrick McHardy 0 siblings, 1 reply; 6+ messages in thread From: Dmitry Mishin @ 2006-09-07 10:08 UTC (permalink / raw) To: Patrick McHardy; +Cc: netfilter-devel, Yasuyuki KOZAKAI 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> -- diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c index 4f10b06..0e899f0 100644 --- a/net/ipv4/netfilter/arp_tables.c +++ b/net/ipv4/netfilter/arp_tables.c @@ -487,7 +487,7 @@ static inline int check_entry(struct arp if (t->u.kernel.target == &arpt_standard_target) { if (!standard_check(t, size)) { ret = -EINVAL; - goto out; + goto err; } } else if (t->u.kernel.target->checkentry && !t->u.kernel.target->checkentry(name, e, target, t->data, diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c index a0f3680..38e1e4f 100644 --- a/net/ipv4/netfilter/ip_tables.c +++ b/net/ipv4/netfilter/ip_tables.c @@ -573,7 +573,7 @@ check_entry(struct ipt_entry *e, const c if (t->u.kernel.target == &ipt_standard_target) { if (!standard_check(t, size)) { ret = -EINVAL; - goto cleanup_matches; + goto err; } } else if (t->u.kernel.target->checkentry && !t->u.kernel.target->checkentry(name, e, target, t->data, diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c index d1c3153..3becbb5 100644 --- a/net/ipv6/netfilter/ip6_tables.c +++ b/net/ipv6/netfilter/ip6_tables.c @@ -613,7 +613,7 @@ check_entry(struct ip6t_entry *e, const if (t->u.kernel.target == &ip6t_standard_target) { if (!standard_check(t, size)) { ret = -EINVAL; - goto cleanup_matches; + goto err; } } else if (t->u.kernel.target->checkentry && !t->u.kernel.target->checkentry(name, e, target, t->data, ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: small check_entry & module_refcount cleanup 2006-09-07 10:08 ` small check_entry & module_refcount cleanup Dmitry Mishin @ 2006-09-07 15:02 ` Patrick McHardy 0 siblings, 0 replies; 6+ messages in thread From: Patrick McHardy @ 2006-09-07 15:02 UTC (permalink / raw) To: Dmitry Mishin; +Cc: netfilter-devel, Yasuyuki KOZAKAI Dmitry Mishin wrote: > While standard_target has target->me == NULL, module_put() should be > called for it as for others, because there were try_module_get() before. Applied, thanks Dmitry. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-09-07 15:02 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-09-04 12:17 check_entry & module_refcount Dmitry Mishin 2006-09-04 13:40 ` Patrick McHardy 2006-09-06 1:24 ` Yasuyuki KOZAKAI 2006-09-06 18:23 ` Patrick McHardy 2006-09-07 10:08 ` small check_entry & module_refcount cleanup Dmitry Mishin 2006-09-07 15:02 ` Patrick McHardy
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.