Julia Lawall wrote: > From: Julia Lawall <julia@xxxxxxx> > > If both the test on rport and the call to get_device fail, then the lock is > already held. The re-lock is thus moved up into the two branches. > > On the other hand if kref_put should not be called with the lock held then > something else should be done. kref_put should not be called with the lock held. Updated patch below. Thanks, Brian -- Brian King Linux on Power Virtualization IBM Linux Technology Center Fixes a potential deadlock in the ibmvfc driver in the rport add thread if it encounters an rport it wants to add which it cannot get a reference to. Signed-off-by: Brian King <brking@xxxxxxxxxxxxxxxxxx> --- drivers/scsi/ibmvscsi/ibmvfc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff -puN drivers/scsi/ibmvscsi/ibmvfc.c~ibmvfc_fix_add_locking drivers/scsi/ibmvscsi/ibmvfc.c --- linux-2.6/drivers/scsi/ibmvscsi/ibmvfc.c~ibmvfc_fix_add_locking 2009-07-20 09:49:28.000000000 -0500 +++ linux-2.6-bjking1/drivers/scsi/ibmvscsi/ibmvfc.c 2009-07-20 09:54:54.000000000 -0500 @@ -4283,7 +4283,8 @@ static void ibmvfc_rport_add_thread(stru tgt_dbg(tgt, "Setting rport roles\n"); fc_remote_port_rolechg(rport, tgt->ids.roles); put_device(&rport->dev); - } + } else + spin_unlock_irqrestore(vhost->host->host_lock, flags); kref_put(&tgt->kref, ibmvfc_release_tgt); spin_lock_irqsave(vhost->host->host_lock, flags); _ -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html