--- /dev/null
+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)