aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libfc/fc_lport.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/libfc/fc_lport.c')
-rw-r--r--drivers/scsi/libfc/fc_lport.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c
index 22c0f7bc004f..f33e5732e3fc 100644
--- a/drivers/scsi/libfc/fc_lport.c
+++ b/drivers/scsi/libfc/fc_lport.c
@@ -205,12 +205,11 @@ static void fc_lport_ptp_setup(struct fc_lport *lport,
205 ids.node_name = remote_wwnn; 205 ids.node_name = remote_wwnn;
206 ids.roles = FC_RPORT_ROLE_UNKNOWN; 206 ids.roles = FC_RPORT_ROLE_UNKNOWN;
207 207
208 if (lport->ptp_rp) { 208 mutex_lock(&lport->disc.disc_mutex);
209 if (lport->ptp_rp)
209 lport->tt.rport_logoff(lport->ptp_rp); 210 lport->tt.rport_logoff(lport->ptp_rp);
210 lport->ptp_rp = NULL;
211 }
212
213 lport->ptp_rp = lport->tt.rport_create(lport, &ids); 211 lport->ptp_rp = lport->tt.rport_create(lport, &ids);
212 mutex_unlock(&lport->disc.disc_mutex);
214 213
215 lport->tt.rport_login(lport->ptp_rp); 214 lport->tt.rport_login(lport->ptp_rp);
216 215
@@ -931,10 +930,7 @@ static void fc_lport_reset_locked(struct fc_lport *lport)
931 if (lport->dns_rp) 930 if (lport->dns_rp)
932 lport->tt.rport_logoff(lport->dns_rp); 931 lport->tt.rport_logoff(lport->dns_rp);
933 932
934 if (lport->ptp_rp) { 933 lport->ptp_rp = NULL;
935 lport->tt.rport_logoff(lport->ptp_rp);
936 lport->ptp_rp = NULL;
937 }
938 934
939 lport->tt.disc_stop(lport); 935 lport->tt.disc_stop(lport);
940 936
@@ -1304,7 +1300,9 @@ static void fc_lport_enter_dns(struct fc_lport *lport)
1304 1300
1305 fc_lport_state_enter(lport, LPORT_ST_DNS); 1301 fc_lport_state_enter(lport, LPORT_ST_DNS);
1306 1302
1303 mutex_lock(&lport->disc.disc_mutex);
1307 rdata = lport->tt.rport_create(lport, &ids); 1304 rdata = lport->tt.rport_create(lport, &ids);
1305 mutex_unlock(&lport->disc.disc_mutex);
1308 if (!rdata) 1306 if (!rdata)
1309 goto err; 1307 goto err;
1310 1308