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:	Thu, 12 Mar 2015 14:32:19 -0500
From:	Bjorn Helgaas <bhelgaas@...gle.com>
To:	Yijing Wang <wangyijing@...wei.com>
Cc:	Jiang Liu <jiang.liu@...ux.intel.com>, linux-pci@...r.kernel.org,
	Yinghai Lu <yinghai@...nel.org>, linux-kernel@...r.kernel.org,
	Marc Zyngier <marc.zyngier@....com>,
	linux-arm-kernel@...ts.infradead.org,
	Russell King <linux@....linux.org.uk>, x86@...nel.org,
	Thomas Gleixner <tglx@...utronix.de>,
	Benjamin Herrenschmidt <benh@...nel.crashing.org>,
	Rusty Russell <rusty@...tcorp.com.au>,
	Tony Luck <tony.luck@...el.com>, linux-ia64@...r.kernel.org,
	"David S. Miller" <davem@...emloft.net>,
	Guan Xuetao <gxt@...c.pku.edu.cn>, linux-alpha@...r.kernel.org,
	linux-m68k@...ts.linux-m68k.org, Liviu Dudau <liviu@...au.co.uk>,
	Arnd Bergmann <arnd@...db.de>,
	Geert Uytterhoeven <geert@...ux-m68k.org>
Subject: Re: [PATCH v6 03/30] PCI: Export busn_resource to drivers/pci

On Thu, Mar 12, 2015 at 07:42:25PM +0800, Yijing Wang wrote:
> >> -static struct resource busn_resource = {
> >> +struct resource busn_resource = {
> >>  	.name	= "PCI busn",
> >>  	.start	= 0,
> >>  	.end	= 255,
> >>  	.flags	= IORESOURCE_BUS,
> >>  };
> >> +EXPORT_SYMBOL(busn_resource);
> > 
> > I don't think this is a good idea.  We support multiple PCI domains, and
> > each domain has its own 0-255 bus number range.  This busn_resource is
> > only for domain 0 and probably should be handled in arch code instead of
> > the PCI core.
> > 
> > Right now, I think it's possible to call pci_scan_bus_parented() or
> > pci_scan_bus() several times for buses in different domains, and they would
> > all share the same busn_resource, which would cause corruption.
> > 
> > So it's already broken, but I don't want to make it harder to fix by
> > exporting this stuff.
> 
> Hi Bjorn, busn_resource may would not be shared by multi domains,
> 
> We insert bus number resource like:
> 
> pci_add_resource(&resources, &busn_resource);	
> 	pci_bus_insert_busn_res(root_bus, start, bus_max);	//start is the root bus number provided by arch pci host driver, bus max here == 255
> 		get_pci_domain_busn_res(domain)	//for root bus	//try to get a domain specific pci_domain_busn_res, if not exist, create it.
> 			request_resource_conflict(domain_specific_busn_res, res)   //request busn res(start, bus_max) from the pci_domain_busn_res.
> 
> So every domain has its own pci_domain_busn_res , different domain would not share the same bus number resource.

The intent of pci_add_resource() and passing the resulting resource list
into pci_scan_root_bus(), etc., is that the host bridge may consume any
resources described by the list.  If we pass the same resource to multiple
calls, that means the resource must be shared between the multiple host
bridges involved.  For bus numbers, that makes some sense if the platform
considers the bridges to be in the same domain, but not if they are in
different domains.

If we export busn_resource, we have no control over what domains it becomes
associated with because the domain is passed into pci_scan_root_bus() by
the caller.

Bjorn
--
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