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]
Message-ID: <20090619141128.GA11506@suse.de>
Date:	Fri, 19 Jun 2009 07:11:28 -0700
From:	Greg KH <gregkh@...e.de>
To:	Uwe Kleine-König 
	<u.kleine-koenig@...gutronix.de>
Cc:	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] platform_driver_register:  warn if probe is in
	.init.text

On Fri, Jun 19, 2009 at 03:42:19PM +0200, Uwe Kleine-König wrote:
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@...gutronix.de>
> ---
>  drivers/base/platform.c |   42 ++++++++++++++++++++++++++++++++++++------
>  include/linux/kernel.h  |    2 ++
>  include/linux/module.h  |   12 ++++++++++++
>  kernel/extable.c        |   12 ++++++++++++
>  kernel/module.c         |   36 ++++++++++++++++++++++++++++++++++++
>  5 files changed, 98 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/base/platform.c b/drivers/base/platform.c
> index 81cb01b..851ba84 100644
> --- a/drivers/base/platform.c
> +++ b/drivers/base/platform.c
> @@ -470,11 +470,7 @@ static void platform_drv_shutdown(struct device *_dev)
>  	drv->shutdown(dev);
>  }
>  
> -/**
> - * platform_driver_register
> - * @drv: platform driver structure
> - */
> -int platform_driver_register(struct platform_driver *drv)
> +static int __platform_driver_register(struct platform_driver *drv)
>  {
>  	drv->driver.bus = &platform_bus_type;
>  	if (drv->probe)
> @@ -489,6 +485,40 @@ int platform_driver_register(struct platform_driver *drv)
>  
>  	return driver_register(&drv->driver);
>  }
> +
> +/**
> + * platform_driver_register
> + * @drv: platform driver structure
> + */
> +int platform_driver_register(struct platform_driver *drv)
> +{
> +	int ret = __platform_driver_register(drv);
> +
> +#if defined(CONFIG_HOTPLUG)
> +	/*
> +	 * drivers that are registered by platform_driver_register
> +	 * should not have their probe function in .init.text.  The
> +	 * reason is that a probe can happen after .init.text is
> +	 * discarded which then results in an oops.  The alternatives
> +	 * are using .devinit.text for the probe function or "register"
> +	 * with platform_driver_probe.
> +	 */

That's not true, remember, drivers built into the system, like platform
ones, can have their probe function in .init.text, as it will be called
before we discard .init.text, and will never be called again as the
device will never be "hot added" at any future time.

So this could trigger a lot of false positives :(

thanks,

greg k-h
--
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