All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
To: Alex Chiang <achiang@hp.com>,
	Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>,
	lenb@kernel.org, linux-acpi@vger.kernel.org,
	Bjorn Helgaas <bjorn.helgaas@hp.com>,
	linux-kernel@vger.k
Subject: Re: [PATCH v2 07/11] ACPI: acpi_pci_unbind should clean up	properly after acpi_pci_bind
Date: Mon, 08 Jun 2009 12:23:21 +0900	[thread overview]
Message-ID: <4A2C8429.2020401@jp.fujitsu.com> (raw)
In-Reply-To: <20090604233521.GA12900@ethanol>

Alex Chiang wrote:
> * Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>:
>>>  
>> I have a concern about this change.
>>
>> The acpi_pci_irq_del_prt() against dev->bus removes not only
>> the _PRT entries for PCI function corresponding to specified
>> acpi_device, but also other _PRT entries for working PCI
>> devices/functions on the same bus. As a result, interrupt
>> initialization for those PCI functions would no longer work
>> properly after that.
>>
>> So I think we should not call acpi_pci_irq_del_prt() against
>> dev->bus.
> 
> Thanks for the review. I agree with you.
> 
> Here is a respun version of this patch.
> 
> 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..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.

Thanks,
Kenji Kaneshige


>  
> -	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;
>  
>  	pci_dev_put(dev);
>  	return 0;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 



WARNING: multiple messages have this Message-ID (diff)
From: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
To: Alex Chiang <achiang@hp.com>,
	Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>,
	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: Mon, 08 Jun 2009 12:23:21 +0900	[thread overview]
Message-ID: <4A2C8429.2020401@jp.fujitsu.com> (raw)
In-Reply-To: <20090604233521.GA12900@ethanol>

Alex Chiang wrote:
> * Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>:
>>>  
>> I have a concern about this change.
>>
>> The acpi_pci_irq_del_prt() against dev->bus removes not only
>> the _PRT entries for PCI function corresponding to specified
>> acpi_device, but also other _PRT entries for working PCI
>> devices/functions on the same bus. As a result, interrupt
>> initialization for those PCI functions would no longer work
>> properly after that.
>>
>> So I think we should not call acpi_pci_irq_del_prt() against
>> dev->bus.
> 
> Thanks for the review. I agree with you.
> 
> Here is a respun version of this patch.
> 
> 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..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.

Thanks,
Kenji Kaneshige


>  
> -	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;
>  
>  	pci_dev_put(dev);
>  	return 0;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 



  parent reply	other threads:[~2009-06-08  3:23 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 [this message]
2009-06-08  3:23         ` Kenji Kaneshige
2009-06-09 19:09         ` Alex Chiang
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=4A2C8429.2020401@jp.fujitsu.com \
    --to=kaneshige.kenji@jp.fujitsu.com \
    --cc=achiang@hp.com \
    --cc=bjorn.helgaas@hp.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.k \
    /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.