[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:
Родитель
fd706d6957
Коммит
a5ea6169f2
|
@ -46,11 +46,11 @@ int nf_log_unregister_pf(int pf)
|
|||
return -EINVAL;
|
||||
|
||||
spin_lock(&nf_log_lock);
|
||||
nf_logging[pf] = NULL;
|
||||
rcu_assign_pointer(nf_logging[pf], NULL);
|
||||
spin_unlock(&nf_log_lock);
|
||||
|
||||
/* Give time to concurrent readers. */
|
||||
synchronize_net();
|
||||
synchronize_rcu();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -63,11 +63,11 @@ void nf_log_unregister_logger(struct nf_logger *logger)
|
|||
spin_lock(&nf_log_lock);
|
||||
for (i = 0; i < NPROTO; i++) {
|
||||
if (nf_logging[i] == logger)
|
||||
nf_logging[i] = NULL;
|
||||
rcu_assign_pointer(nf_logging[i], NULL);
|
||||
}
|
||||
spin_unlock(&nf_log_lock);
|
||||
|
||||
synchronize_net();
|
||||
synchronize_rcu();
|
||||
}
|
||||
EXPORT_SYMBOL(nf_log_unregister_logger);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче