summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Efremov <yefremov.denis@gmail.com>2012-08-18 14:10:31 +0200
committerNicholas Bellinger <nab@linux-iscsi.org>2012-08-20 23:52:15 +0200
commit08a16208c8cb2ce1f79fea24f21dd7a8df4f12b6 (patch)
tree8df3946aff29d4dcbdbddb42296388a3486c1b6e
parenttcm_vhost: Fix vhost_scsi_target structure alignment (diff)
downloadlinux-08a16208c8cb2ce1f79fea24f21dd7a8df4f12b6.tar.xz
linux-08a16208c8cb2ce1f79fea24f21dd7a8df4f12b6.zip
tcm_fc: rcu_deref outside rcu lock/unlock section
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>
-rw-r--r--drivers/target/tcm_fc/tfc_sess.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/target/tcm_fc/tfc_sess.c b/drivers/target/tcm_fc/tfc_sess.c
index 87901fa74dd7..3c9e5b57caab 100644
--- a/drivers/target/tcm_fc/tfc_sess.c
+++ b/drivers/target/tcm_fc/tfc_sess.c
@@ -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;