|
@@ -107,11 +107,15 @@ EXPORT_SYMBOL(nf_log_register);
|
|
|
|
|
|
void nf_log_unregister(struct nf_logger *logger)
|
|
|
{
|
|
|
+ const struct nf_logger *log;
|
|
|
int i;
|
|
|
|
|
|
mutex_lock(&nf_log_mutex);
|
|
|
- for (i = 0; i < NFPROTO_NUMPROTO; i++)
|
|
|
- RCU_INIT_POINTER(loggers[i][logger->type], NULL);
|
|
|
+ for (i = 0; i < NFPROTO_NUMPROTO; i++) {
|
|
|
+ log = nft_log_dereference(loggers[i][logger->type]);
|
|
|
+ if (log == logger)
|
|
|
+ RCU_INIT_POINTER(loggers[i][logger->type], NULL);
|
|
|
+ }
|
|
|
mutex_unlock(&nf_log_mutex);
|
|
|
}
|
|
|
EXPORT_SYMBOL(nf_log_unregister);
|