Selaa lähdekoodia

[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>
Patrick McHardy 18 vuotta sitten
vanhempi
commit
a5ea6169f2
1 muutettua tiedostoa jossa 4 lisäystä ja 4 poistoa
  1. 4 4
      net/netfilter/nf_log.c

+ 4 - 4
net/netfilter/nf_log.c

@@ -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);