| From stable-bounces@linux.kernel.org Wed Jul 25 08:01:19 2007 |
| From: Patrick McHardy <kaber@trash.net> |
| Date: Wed, 25 Jul 2007 17:00:15 +0200 |
| Subject: Netfilter: Fix logging regression |
| To: stable@kernel.org |
| Cc: Netfilter Development Mailinglist <netfilter-devel@lists.netfilter.org>, "David S. Miller" <davem@davemloft.net> |
| Message-ID: <46A7657F.20906@trash.net> |
| |
| From: Patrick McHardy <kaber@trash.net> |
| |
| [NETFILTER]: Fix logging regression |
| |
| Loading one of the LOG target fails if a different target has already |
| registered itself as backend for the same family. This can affect the |
| ipt_LOG and ipt_ULOG modules when both are loaded. |
| |
| Reported and tested by: <t.artem@mailcity.com> |
| Upstream-commit: 7e2acc7e |
| |
| Signed-off-by: Patrick McHardy <kaber@trash.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| net/bridge/netfilter/ebt_log.c | 6 ++---- |
| net/bridge/netfilter/ebt_ulog.c | 8 ++------ |
| net/ipv4/netfilter/ipt_LOG.c | 6 ++---- |
| net/ipv6/netfilter/ip6t_LOG.c | 6 ++---- |
| 4 files changed, 8 insertions(+), 18 deletions(-) |
| |
| --- a/net/bridge/netfilter/ebt_log.c |
| +++ b/net/bridge/netfilter/ebt_log.c |
| @@ -196,10 +196,8 @@ static int __init ebt_log_init(void) |
| ret = ebt_register_watcher(&log); |
| if (ret < 0) |
| return ret; |
| - ret = nf_log_register(PF_BRIDGE, &ebt_log_logger); |
| - if (ret < 0 && ret != -EEXIST) |
| - ebt_unregister_watcher(&log); |
| - return ret; |
| + nf_log_register(PF_BRIDGE, &ebt_log_logger); |
| + return 0; |
| } |
| |
| static void __exit ebt_log_fini(void) |
| --- a/net/bridge/netfilter/ebt_ulog.c |
| +++ b/net/bridge/netfilter/ebt_ulog.c |
| @@ -308,12 +308,8 @@ static int __init ebt_ulog_init(void) |
| else if ((ret = ebt_register_watcher(&ulog))) |
| sock_release(ebtulognl->sk_socket); |
| |
| - if (nf_log_register(PF_BRIDGE, &ebt_ulog_logger) < 0) { |
| - printk(KERN_WARNING "ebt_ulog: not logging via ulog " |
| - "since somebody else already registered for PF_BRIDGE\n"); |
| - /* we cannot make module load fail here, since otherwise |
| - * ebtables userspace would abort */ |
| - } |
| + if (ret == 0) |
| + nf_log_register(PF_BRIDGE, &ebt_ulog_logger); |
| |
| return ret; |
| } |
| --- a/net/ipv4/netfilter/ipt_LOG.c |
| +++ b/net/ipv4/netfilter/ipt_LOG.c |
| @@ -477,10 +477,8 @@ static int __init ipt_log_init(void) |
| ret = xt_register_target(&ipt_log_reg); |
| if (ret < 0) |
| return ret; |
| - ret = nf_log_register(PF_INET, &ipt_log_logger); |
| - if (ret < 0 && ret != -EEXIST) |
| - xt_unregister_target(&ipt_log_reg); |
| - return ret; |
| + nf_log_register(PF_INET, &ipt_log_logger); |
| + return 0; |
| } |
| |
| static void __exit ipt_log_fini(void) |
| --- a/net/ipv6/netfilter/ip6t_LOG.c |
| +++ b/net/ipv6/netfilter/ip6t_LOG.c |
| @@ -490,10 +490,8 @@ static int __init ip6t_log_init(void) |
| ret = xt_register_target(&ip6t_log_reg); |
| if (ret < 0) |
| return ret; |
| - ret = nf_log_register(PF_INET6, &ip6t_logger); |
| - if (ret < 0 && ret != -EEXIST) |
| - xt_unregister_target(&ip6t_log_reg); |
| - return ret; |
| + nf_log_register(PF_INET6, &ip6t_logger); |
| + return 0; |
| } |
| |
| static void __exit ip6t_log_fini(void) |