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  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:	Sun, 09 Mar 2014 18:49:46 +0100
From:	"Rafael J. Wysocki" <rjw@...ysocki.net>
To:	Zhang Rui <rui.zhang@...el.com>
Cc:	linux-acpi@...r.kernel.org, linux-kernel@...r.kernel.org,
	bhelgaas@...gle.com, matthew.garrett@...ula.com,
	rafael.j.wysocki@...el.com, dmitry.torokhov@...il.com
Subject: Re: [RFC PATCH 2/8] PNPACPI: use whilte list for pnpacpi device enumeration

On Sunday, March 09, 2014 01:29:30 PM Zhang Rui wrote:
> On Fri, 2014-03-07 at 02:44 +0100, Rafael J. Wysocki wrote:
> > On Wednesday, February 26, 2014 05:11:08 PM Zhang Rui wrote:
> > > +
> > > +static int __init acpi_pnp_scan_handler_attach(struct acpi_device *adev,
> > 
> > This can't be __init.
> > 
> > > +                                   const struct acpi_device_id *id)
> > > +{
> > > +	return 1;
> > > +}
> > > +
> > > +static int __init acpi_pnp_scan_handler_match(char *devid, char *handlerid)
> > 
> > And this too.
> > 
> > > +{
> > > +	int i;
> > > +
> > > +	if (!ispnpidacpi(devid))
> > > +		return 0;
> > > +
> > > +	if (memcmp(devid, handlerid, 3))
> > > +		return 0;
> > > +
> > > +        for (i = 3; i < 7; i++) {
> > > +                if (handlerid[i] != 'X' &&
> > > +		    toupper(devid[i]) != toupper(handlerid[i]))
> > > +                        return 0;
> > > +        }
> > > +	return 1;
> > > +}
> > > +
> > > +static struct acpi_scan_handler pnpacpi_handler __initdata = {
> > 
> > And this cannot be __initdata, because the list of ACPI scan handlers is
> > walked during hotplug.
> > 
> right. will update it in next version.
> 
> > > +	.ids = acpi_pnp_device_ids,
> > > +	.match = acpi_pnp_scan_handler_match,
> > > +	.attach = acpi_pnp_scan_handler_attach,
> > > +};
> > > +
> > > +void __init acpi_pnp_init(void)
> > > +{
> > > +	acpi_scan_add_handler(&pnpacpi_handler);
> > > +}
> > > +
> > > +static acpi_status __init pnpacpi_add_device_handler(acpi_handle handle,
> > > +						     u32 lvl, void *context,
> > > +						     void **rv)
> > > +{
> > > +	struct acpi_device *device;
> > > +
> > > +	if (acpi_bus_get_device(handle, &device))
> > > +		return AE_CTRL_DEPTH;
> > > +	if (device->handler == &pnpacpi_handler)
> > > +		pnpacpi_add_device(device);
> > 
> > Why don't you do that in acpi_pnp_scan_handler_attach() ?
> > 
> because the PNP bus is not ready at that time.

Do you mean it hasn't been initialized yet?

But we can initialize it before the scan handler initialization, can't we?

Rafael

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