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>
(cherry picked from commit b0b2937fda85f1eaf885527518993a035cfa13bc)
Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
This commit is contained in:
Pablo Neira Ayuso 2024-01-29 11:09:43 +01:00 committed by Vegard Nossum
parent 86c1617a51
commit a0373ec833

View File

@ -202,11 +202,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);