lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 19 Jun 2013 00:33:46 +0800
From:	Jiang Liu <liuj97@...il.com>
To:	Bjorn Helgaas <bhelgaas@...gle.com>
CC:	Yinghai Lu <yinghai@...nel.org>, Jiang Liu <jiang.liu@...wei.com>,
	"Rafael J . Wysocki" <rjw@...k.pl>,
	Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
	Gu Zheng <guz.fnst@...fujitsu.com>,
	Toshi Kani <toshi.kani@...com>,
	Myron Stowe <myron.stowe@...hat.com>,
	Yijing Wang <wangyijing@...wei.com>, linux-pci@...r.kernel.org,
	linux-kernel@...r.kernel.org,
	Mauro Carvalho Chehab <mchehab@...hat.com>,
	Doug Thompson <dougthompson@...ssion.com>,
	linux-edac@...r.kernel.org
Subject: Re: [PATCH v3, part2 15/20] PCI, EDAC: use hotplug-safe PCI bus iterators
 to walk PCI buses

On 06/18/2013 04:18 AM, Bjorn Helgaas wrote:
> On Sun, May 26, 2013 at 11:53:12PM +0800, Jiang Liu wrote:
>> Enhance EDAC drviers to use hotplug-safe iterators to walk PCI buses.
>>
>> Signed-off-by: Jiang Liu <jiang.liu@...wei.com>
>> Cc: Mauro Carvalho Chehab <mchehab@...hat.com>
>> Cc: Doug Thompson <dougthompson@...ssion.com> r
>> Cc: linux-edac@...r.kernel.org
>> Cc: linux-kernel@...r.kernel.org
>> ---
>>  drivers/edac/i7core_edac.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c
>> index 0ec3e95..7146e10 100644
>> --- a/drivers/edac/i7core_edac.c
>> +++ b/drivers/edac/i7core_edac.c
>> @@ -1296,7 +1296,7 @@ static unsigned i7core_pci_lastbus(void)
>>  	int last_bus = 0, bus;
>>  	struct pci_bus *b = NULL;
>>  
>> -	while ((b = pci_find_next_bus(b)) != NULL) {
>> +	for_each_pci_root_bus(b) {
> 
> This doesn't look equivalent.  Previously, we iterated over all PCI
> buses, so we returned the highest bus number seen anywhere.  Now we
> only look at root buses, so we return the highest bus number of any
> root bus.  But if that root bus has a bridge on it, obviously the
> bus on the other side has a higher number.
Hi Bjorn,
	I think the name pci_find_next_bus() is misleading, it should be named
pci_find_next_root_bus() actually because it returns next root bus indeed.

> 
> Even with that fix, a hot-add at the same time i7core_probe() runs
> could mean an incorrect result.  This is all very i7 topology-dependent,
> so I don't think the PCI core can do anything more than avoid oopses
> from traversing lists incorrectly.
Yeah, it's very architecture specific. I think i7core_edac assume no PCI
root bus hotplug on i7 platforms because it's desktop or mobile processors.

> 
> Bjorn
> 
>>  		bus = b->number;
>>  		edac_dbg(0, "Found bus %d\n", bus);
>>  		if (bus > last_bus)
>> -- 
>> 1.8.1.2
>>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ