diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2024-01-29 11:09:43 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-02-05 20:13:02 +0000 |
commit | 9ff981cd65cd0843138bb3b1aca8c1d96e799bc2 (patch) | |
tree | 101b5a3993518df54a79f668cc7cb0af109b4dad | |
parent | 67f0ca0a4c85a0d067fac287d508e598c1c0a4be (diff) | |
download | linux-stable-9ff981cd65cd0843138bb3b1aca8c1d96e799bc2.tar.gz linux-stable-9ff981cd65cd0843138bb3b1aca8c1d96e799bc2.tar.bz2 linux-stable-9ff981cd65cd0843138bb3b1aca8c1d96e799bc2.zip |
netfilter: nf_log: replace BUG_ON by WARN_ON_ONCE when putting logger
[ 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>
-rw-r--r-- | net/netfilter/nf_log.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c index 8a29290149bd..be93a02497d6 100644 --- a/net/netfilter/nf_log.c +++ b/net/netfilter/nf_log.c @@ -193,11 +193,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); |