]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
netfilter: nf_log: replace BUG_ON by WARN_ON_ONCE when putting logger
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 29 Jan 2024 10:09:43 +0000 (11:09 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Feb 2024 07:42:17 +0000 (08:42 +0100)
[ Upstream commit 259eb32971e9eb24d1777a28d82730659f50fdcb ]

Module reference is bumped for each user, this should not ever happen.

But BUG_ON check should use rcu_access_pointer() instead.

If this ever happens, do WARN_ON_ONCE() instead of BUG_ON() and
consolidate pointer check under the rcu read side lock section.

Fixes: fab4085f4e24 ("netfilter: log: nf_log_packet() as real unified interface")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/netfilter/nf_log.c

index 6cb9f9474b05510a71b3de74cccca1a458a45b91..28c6cb5cff0e3c7585509e6e27d7ff23b822cc17 100644 (file)
@@ -203,11 +203,12 @@ void nf_logger_put(int pf, enum nf_log_type type)
                return;
        }
 
-       BUG_ON(loggers[pf][type] == NULL);
-
        rcu_read_lock();
        logger = rcu_dereference(loggers[pf][type]);
-       module_put(logger->me);
+       if (!logger)
+               WARN_ON_ONCE(1);
+       else
+               module_put(logger->me);
        rcu_read_unlock();
 }
 EXPORT_SYMBOL_GPL(nf_logger_put);