All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Chiang <achiang@hp.com>
To: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Cc: lenb@kernel.org, linux-acpi@vger.kernel.org,
	Bjorn Helgaas <bjorn.helgaas@hp.com>,
	linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org
Subject: Re: [PATCH v2 07/11] ACPI: acpi_pci_unbind should clean up properly after acpi_pci_bind
Date: Tue, 9 Jun 2009 13:09:11 -0600	[thread overview]
Message-ID: <20090609190911.GE23647@ldl.fc.hp.com> (raw)
In-Reply-To: <4A2C8429.2020401@jp.fujitsu.com>

* Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>:
> Alex Chiang wrote:
>> diff --git a/drivers/acpi/pci_bind.c b/drivers/acpi/pci_bind.c
>> index 62cb383..c9cc650 100644
>> --- a/drivers/acpi/pci_bind.c
>> +++ b/drivers/acpi/pci_bind.c
>> @@ -109,11 +109,13 @@ static int acpi_pci_unbind(struct acpi_device *device)
>>  	struct pci_dev *dev;
>>   	dev = acpi_get_pci_dev(device->handle);
>> -	if (!dev)
>> +	if (!dev || !dev->subordinate)
>>  		return 0;
>
> This would leak the pci_dev's refcount
> if dev != NULL && dev->subordinate == NULL.

Yes, of course you are correct. Thanks for correcting my
sloppiness.

Here is the correct fix.

From: Alex Chiang <achiang@hp.com>

ACPI: acpi_pci_unbind should clean up properly after acpi_pci_bind

In acpi_pci_bind, we set device->ops.bind and device->ops.unbind, but
never clear them out.

Cc: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Alex Chiang <achiang@hp.com>
---
diff --git a/drivers/acpi/pci_bind.c b/drivers/acpi/pci_bind.c
index 62cb383..af75784 100644
--- a/drivers/acpi/pci_bind.c
+++ b/drivers/acpi/pci_bind.c
@@ -109,12 +109,15 @@ static int acpi_pci_unbind(struct acpi_device *device)
 	struct pci_dev *dev;
 
 	dev = acpi_get_pci_dev(device->handle);
-	if (!dev)
-		return 0;
+	if (!dev || !dev->subordinate)
+		goto out:
 
-	if (dev->subordinate)
-		acpi_pci_irq_del_prt(dev->subordinate);
+	acpi_pci_irq_del_prt(dev->subordinate);
 
+	device->ops.bind = NULL;
+	device->ops.unbind = NULL;
+
+out:
 	pci_dev_put(dev);
 	return 0;
 }

  reply	other threads:[~2009-06-09 19:09 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-04  5:58 [PATCH v2 00/11] Dynamic ACPI-PCI binding Alex Chiang
2009-06-04  5:58 ` [PATCH v2 01/11] ACPI: make acpi_pci_bind() static Alex Chiang
2009-06-04  5:58 ` [PATCH v2 02/11] ACPI: Introduce acpi_is_root_bridge() Alex Chiang
2009-06-04  5:58 ` [PATCH v2 03/11] ACPI: Introduce acpi_get_pci_dev() Alex Chiang
2009-06-04  5:58 ` [PATCH v2 04/11] ACPI: eviscerate pci_bind.c Alex Chiang
2009-06-04  5:58 ` [PATCH v2 05/11] ACPI: simplify acpi_pci_irq_add_prt() API Alex Chiang
2009-06-04  5:58 ` [PATCH v2 06/11] ACPI: simplify acpi_pci_irq_del_prt() API Alex Chiang
2009-06-04  5:58 ` [PATCH v2 07/11] ACPI: acpi_pci_unbind should clean up properly after acpi_pci_bind Alex Chiang
2009-06-04  8:42   ` Kenji Kaneshige
2009-06-04 23:35     ` Alex Chiang
2009-06-05 15:49       ` Bjorn Helgaas
2009-06-05 15:59         ` Alex Chiang
2009-06-09 19:14         ` Alex Chiang
2009-06-08  3:23       ` Kenji Kaneshige
2009-06-08  3:23         ` Kenji Kaneshige
2009-06-09 19:09         ` Alex Chiang [this message]
2009-06-04  5:58 ` [PATCH v2 08/11] PCI Hotplug: acpiphp: convert to acpi_get_pci_dev Alex Chiang
2009-06-11 21:48   ` Jesse Barnes
2009-06-11 22:17     ` Jesse Barnes
2009-06-11 22:17       ` Jesse Barnes
2009-06-04  5:59 ` [PATCH v2 09/11] ACPI: kill acpi_get_pci_id Alex Chiang
2009-06-04  5:59 ` [PATCH v2 10/11] ACPI: video: convert to acpi_get_pci_dev Alex Chiang
2009-06-04  5:59 ` [PATCH v2 11/11] ACPI: kill acpi_get_physical_pci_device() Alex Chiang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090609190911.GE23647@ldl.fc.hp.com \
    --to=achiang@hp.com \
    --cc=bjorn.helgaas@hp.com \
    --cc=kaneshige.kenji@jp.fujitsu.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.