[NETFILTER]: nf_log: use rcu_assign_pointer for RCU protected pointer

Also replace synchronize_net() calls by synchronize_rcu() since the
RCU protected data is also used for sysfs.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Patrick McHardy 2007-02-12 11:11:06 -08:00 committed by David S. Miller
parent fd706d6957
commit a5ea6169f2
1 changed files with 4 additions and 4 deletions

View File

@ -46,11 +46,11 @@ int nf_log_unregister_pf(int pf)
return -EINVAL; return -EINVAL;
spin_lock(&nf_log_lock); spin_lock(&nf_log_lock);
nf_logging[pf] = NULL; rcu_assign_pointer(nf_logging[pf], NULL);
spin_unlock(&nf_log_lock); spin_unlock(&nf_log_lock);
/* Give time to concurrent readers. */ /* Give time to concurrent readers. */
synchronize_net(); synchronize_rcu();
return 0; return 0;
} }
@ -63,11 +63,11 @@ void nf_log_unregister_logger(struct nf_logger *logger)
spin_lock(&nf_log_lock); spin_lock(&nf_log_lock);
for (i = 0; i < NPROTO; i++) { for (i = 0; i < NPROTO; i++) {
if (nf_logging[i] == logger) if (nf_logging[i] == logger)
nf_logging[i] = NULL; rcu_assign_pointer(nf_logging[i], NULL);
} }
spin_unlock(&nf_log_lock); spin_unlock(&nf_log_lock);
synchronize_net(); synchronize_rcu();
} }
EXPORT_SYMBOL(nf_log_unregister_logger); EXPORT_SYMBOL(nf_log_unregister_logger);