Merge branch 'for-linus' of git://www.jni.nu/cris
[deliverable/linux.git] / net / netfilter / nf_conntrack_ecache.c
index f516961a83b44f9a2795dae259be5af3cf399abf..cdcc7649476b60e0e8584a7c2b2d31e7509a4bd4 100644 (file)
@@ -85,7 +85,8 @@ int nf_conntrack_register_notifier(struct nf_ct_event_notifier *new)
        struct nf_ct_event_notifier *notify;
 
        mutex_lock(&nf_ct_ecache_mutex);
-       notify = rcu_dereference(nf_conntrack_event_cb);
+       notify = rcu_dereference_protected(nf_conntrack_event_cb,
+                                          lockdep_is_held(&nf_ct_ecache_mutex));
        if (notify != NULL) {
                ret = -EBUSY;
                goto out_unlock;
@@ -105,7 +106,8 @@ void nf_conntrack_unregister_notifier(struct nf_ct_event_notifier *new)
        struct nf_ct_event_notifier *notify;
 
        mutex_lock(&nf_ct_ecache_mutex);
-       notify = rcu_dereference(nf_conntrack_event_cb);
+       notify = rcu_dereference_protected(nf_conntrack_event_cb,
+                                          lockdep_is_held(&nf_ct_ecache_mutex));
        BUG_ON(notify != new);
        rcu_assign_pointer(nf_conntrack_event_cb, NULL);
        mutex_unlock(&nf_ct_ecache_mutex);
@@ -118,7 +120,8 @@ int nf_ct_expect_register_notifier(struct nf_exp_event_notifier *new)
        struct nf_exp_event_notifier *notify;
 
        mutex_lock(&nf_ct_ecache_mutex);
-       notify = rcu_dereference(nf_expect_event_cb);
+       notify = rcu_dereference_protected(nf_expect_event_cb,
+                                          lockdep_is_held(&nf_ct_ecache_mutex));
        if (notify != NULL) {
                ret = -EBUSY;
                goto out_unlock;
@@ -138,7 +141,8 @@ void nf_ct_expect_unregister_notifier(struct nf_exp_event_notifier *new)
        struct nf_exp_event_notifier *notify;
 
        mutex_lock(&nf_ct_ecache_mutex);
-       notify = rcu_dereference(nf_expect_event_cb);
+       notify = rcu_dereference_protected(nf_expect_event_cb,
+                                          lockdep_is_held(&nf_ct_ecache_mutex));
        BUG_ON(notify != new);
        rcu_assign_pointer(nf_expect_event_cb, NULL);
        mutex_unlock(&nf_ct_ecache_mutex);
This page took 0.027095 seconds and 5 git commands to generate.