Message ID | 1507246881-20508-1-git-send-email-satishkh@cisco.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Looks good,
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Satish, > In places like fc_rport_recv_plogi_req and fcoe_ctlr_vn_add we > always take the lport disc_mutex lock before the rports mutex > (rp_mutex) lock. Gaurding list_del_rcu(&rdata->peers) with > disc.disc_mutex in fc_rport_work is correct but the rp_mutex lock > can and should to be dropped before taking that lock else results > in a deadlock. Applied to 4.14/scsi-fixes. Thank you!
diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c index 5203258..31d31aa 100644 --- a/drivers/scsi/libfc/fc_rport.c +++ b/drivers/scsi/libfc/fc_rport.c @@ -383,11 +383,11 @@ static void fc_rport_work(struct work_struct *work) fc_rport_enter_flogi(rdata); mutex_unlock(&rdata->rp_mutex); } else { + mutex_unlock(&rdata->rp_mutex); FC_RPORT_DBG(rdata, "work delete\n"); mutex_lock(&lport->disc.disc_mutex); list_del_rcu(&rdata->peers); mutex_unlock(&lport->disc.disc_mutex); - mutex_unlock(&rdata->rp_mutex); kref_put(&rdata->kref, fc_rport_destroy); } } else {