The patch titled fc transport: bug fix: correct references has been added to the -mm tree. Its filename is fc-transport-bug-fix-correct-references.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: fc transport: bug fix: correct references From: James Smart <James.Smart@xxxxxxxxxx> Updating FC transport for: - Add put in fc_rport_final_delete(), to release the rport. Prior, we were leaving the rport with a reference, thus the shost with references, etc. If the driver was unloaded, shosts and rports remained, along with work threads, etc - Fix fc_rport_create failure path - too many put's on parent - Add commenting to easily track ref taking. Signed-off-by: James Smart <james.smart@xxxxxxxxxx> Cc: James Bottomley <James.Bottomley@xxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/scsi/scsi_transport_fc.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) diff -puN drivers/scsi/scsi_transport_fc.c~fc-transport-bug-fix-correct-references drivers/scsi/scsi_transport_fc.c --- 25/drivers/scsi/scsi_transport_fc.c~fc-transport-bug-fix-correct-references Tue Jun 27 14:44:11 2006 +++ 25-akpm/drivers/scsi/scsi_transport_fc.c Tue Jun 27 14:44:11 2006 @@ -1476,7 +1476,8 @@ fc_rport_final_delete(void *data) transport_remove_device(dev); device_del(dev); transport_destroy_device(dev); - put_device(&shost->shost_gendev); + put_device(&shost->shost_gendev); /* for fc_host->rport list */ + put_device(dev); /* for self-reference */ } @@ -1537,13 +1538,13 @@ fc_rport_create(struct Scsi_Host *shost, else rport->scsi_target_id = -1; list_add_tail(&rport->peers, &fc_host->rports); - get_device(&shost->shost_gendev); + get_device(&shost->shost_gendev); /* for fc_host->rport list */ spin_unlock_irqrestore(shost->host_lock, flags); dev = &rport->dev; - device_initialize(dev); - dev->parent = get_device(&shost->shost_gendev); + device_initialize(dev); /* takes self reference */ + dev->parent = get_device(&shost->shost_gendev); /* parent reference */ dev->release = fc_rport_dev_release; sprintf(dev->bus_id, "rport-%d:%d-%d", shost->host_no, channel, rport->number); @@ -1567,10 +1568,9 @@ fc_rport_create(struct Scsi_Host *shost, delete_rport: transport_destroy_device(dev); - put_device(dev->parent); spin_lock_irqsave(shost->host_lock, flags); list_del(&rport->peers); - put_device(&shost->shost_gendev); + put_device(&shost->shost_gendev); /* for fc_host->rport list */ spin_unlock_irqrestore(shost->host_lock, flags); put_device(dev->parent); kfree(rport); _ Patches currently in -mm which might be from James.Smart@xxxxxxxxxx are git-scsi-misc.patch fc-transport-bug-fix-correct-references.patch scsi-midlayer-fix-sdev-reuse-after-free.patch block-i-o-while-sg-reset-operation-in-progress-midlayer.patch block-i-o-while-sg-reset-operation-in-progress-lpfc.patch fc-transport-resolve-scan-vs-delete-deadlocks.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html