From 24a63822870b31d1fbbcae398227500324c72033 Mon Sep 17 00:00:00 2001 From: James Smart Date: Mon, 26 Jun 2006 14:19:59 -0400 Subject: [PATCH] --- yaml --- r: 31911 b: refs/heads/master c: 3bdad7bd253f17ead00b4af2e82f84e9522c95ac h: refs/heads/master i: 31909: 3e6bc14b5b24cdc2f656f8888a54758a0ce65fa6 31907: 68f5a6afc47f331220541c5c4807a388f9d12659 31903: 5dc2bc3abeacc73a4498b7b07a807bbeef1608ef v: v3 --- [refs] | 2 +- trunk/drivers/scsi/scsi_transport_fc.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index aa86b8fb3afb..12d9fd081aee 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1c9e16e47a22c61d99aabb1c154e5106ddbf3575 +refs/heads/master: 3bdad7bd253f17ead00b4af2e82f84e9522c95ac diff --git a/trunk/drivers/scsi/scsi_transport_fc.c b/trunk/drivers/scsi/scsi_transport_fc.c index df6263dfd791..b03aa85108e5 100644 --- a/trunk/drivers/scsi/scsi_transport_fc.c +++ b/trunk/drivers/scsi/scsi_transport_fc.c @@ -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, int channel, 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, int channel, 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);