tcm_fc: rcu_deref outside rcu lock/unlock section
authorDenis Efremov <yefremov.denis@gmail.com>
Sat, 18 Aug 2012 12:10:31 +0000 (16:10 +0400)
committerNicholas Bellinger <nab@linux-iscsi.org>
Mon, 20 Aug 2012 21:52:15 +0000 (14:52 -0700)
Use rcu_dereference_protected in order to prevent lockdep
complaint. Sequel of the patch 863555be

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Denis Efremov <yefremov.denis@gmail.com>
Acked-by: Mark D. Rustad <mark.d.rustad@intel.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/tcm_fc/tfc_sess.c

index 87901fa..3c9e5b5 100644 (file)
@@ -456,7 +456,9 @@ static void ft_prlo(struct fc_rport_priv *rdata)
        struct ft_tport *tport;
 
        mutex_lock(&ft_lport_lock);
-       tport = rcu_dereference(rdata->local_port->prov[FC_TYPE_FCP]);
+       tport = rcu_dereference_protected(rdata->local_port->prov[FC_TYPE_FCP],
+                                         lockdep_is_held(&ft_lport_lock));
+
        if (!tport) {
                mutex_unlock(&ft_lport_lock);
                return;