diff --git a/fcst/ft_sess.c b/fcst/ft_sess.c index 6f91e7b94..a943a5b60 100644 --- a/fcst/ft_sess.c +++ b/fcst/ft_sess.c @@ -420,7 +420,13 @@ static int ft_prli_locked(struct fc_rport_priv *rdata, u32 spp_len, if (!(fcp_parm & FCP_SPPF_INIT_FCN)) return FC_SPP_RESP_CONF; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 34) + tport = rcu_dereference_protected( + rdata->local_port->prov[FC_TYPE_FCP], + lockdep_is_held(&ft_lport_lock)); +#else tport = rcu_dereference(rdata->local_port->prov[FC_TYPE_FCP]); +#endif if (!tport) { /* not a target for this local port */ return FC_SPP_RESP_CONF; @@ -500,7 +506,12 @@ static void ft_prlo(struct fc_rport_priv *rdata) struct ft_tport *tport; mutex_lock(&ft_lport_lock); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 34) + tport = rcu_dereference_protected(rdata->local_port->prov[FC_TYPE_FCP], + lockdep_is_held(&ft_lport_lock)); +#else tport = rcu_dereference(rdata->local_port->prov[FC_TYPE_FCP]); +#endif if (!tport) { mutex_unlock(&ft_lport_lock); return;