All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
To: Greg KH <greg@kroah.com>
Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>,
	Greg KH <gregkh@suse.de>,
	linux-kernel@vger.kernel.org, Sam Ravnborg <sam@ravnborg.org>,
	Rusty Russell <rusty@rustcorp.com.au>,
	Sean MacLennan <smaclennan@pikatech.com>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH] platform_driver_register: warn if probe is in .init.text
Date: Sat, 30 Jan 2010 21:44:25 +0100	[thread overview]
Message-ID: <20100130204425.GA16345@pengutronix.de> (raw)
In-Reply-To: <20100128011403.GB24068@kroah.com>

Hello,

On Wed, Jan 27, 2010 at 05:14:03PM -0800, Greg KH wrote:
> On Tue, Jan 26, 2010 at 09:47:41AM +0100, Uwe Kleine-König wrote:
> > On Mon, Jan 25, 2010 at 06:09:01AM +0900, OGAWA Hirofumi wrote:
> > > Uwe Kleine-König <u.kleine-koenig@pengutronix.de> writes:
> > > > +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.
> > > > +	 */
> > > > +	if (drv->probe && kernel_init_text_address((unsigned long)drv->probe))
> > > > +		pr_warning("oops-warning: probe function of platform driver %s"
> > > > +			       " lives in .init.text\n", drv->driver.name);
> > > > +#else
> > > > +	/*
> > > > +	 * without HOTPLUG probe functions can be discarded after the driver is
> > > > +	 * loaded.
> > > > +	 * There is a little chance for false positives, namely if the driver is
> > > > +	 * registered after the .init sections are discarded.
> > > > +	 */
> > > > +	if (drv->probe && !kernel_init_text_address((unsigned long)drv->probe))
> > > > +		pr_info("probably the probe function of platform driver %s can"
> > > > +				" be moved to .init.text\n", drv->driver.name);
> > > > +#endif
> > > > +	return ret;
> > > > +}
> > > 
> > > Um..., can't we extend modpost or such one for this? I think the static
> > > analysis is better (assume the changing ->probe dynamically is really
> > > rare).
> > I like the idea and will look later into modpost if this can be done
> > there.
> 
> That would be nice to do instead, as we already do checks like this
> today, and might make more sense.
> 
> And could you do it for all probe functions, and not just the platform
> devices?  Don't all busses have this same problem?
I think so, yes.  And I made some changes to modpost to detect those.
Tested on two defconfigs (ARCH=arm) it yields three hits, all valid.

I send the series as reply to this mail or you can get it via git, see
below.

The first six patches should not change behaviour, only do some cleanup
and preparation for the last patch.

The most interesting patch is "make symbol white list a per mismatch
type variable".  It allows a white list per section mismatch type and
so allows to say:

	*driver (in .data) might reference to .devinit.text but not
	.init.text

That's what the last patch does.

Best regards
Uwe

The following changes since commit 499a2673713c85734a54c37dd90b4b729de399c4:
  Linus Torvalds (1):
        Merge branch 'for-linus' of git://git.kernel.org/.../dtor/input

are available in the git repository at:

  git://git.pengutronix.de/git/ukl/linux-2.6.git modpost

Uwe Kleine-König (7):
      modpost: members of *driver structs should not point to __init functions
      modpost: define ALL_XXX{IN,EX}IT_SECTIONS
      modpost: give most mismatch constants a better name
      modpost: pass around const struct sectioncheck * instead of enum mismatch
      modpost: remove now unused NO_MISMATCH constant
      modpost: make symbol white list a per mismatch type variable
      modpost: don't allow *driver to reference .init.*

 scripts/mod/modpost.c |  152 ++++++++++++++++++++++++++++---------------------
 1 files changed, 88 insertions(+), 64 deletions(-)

-- 
Pengutronix e.K.                              | Uwe Kleine-König            |
Industrial Linux Solutions                    | http://www.pengutronix.de/  |

  reply	other threads:[~2010-01-30 20:44 UTC|newest]

Thread overview: 197+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-16  5:13 [GIT PATCH] USB patches for 2.6.30-git Greg KH
     [not found] ` <1245129858-23818-12-git-send-email-gregkh@suse.de>
2009-06-16  6:05   ` [PATCH 012/143] USB: move twl4030_usb's probe function to .devinit.text Uwe Kleine-König
2009-06-16  6:20     ` Greg KH
2009-06-16  9:14       ` Uwe Kleine-König
2009-06-16 16:21         ` Greg KH
2009-06-16 17:59           ` Uwe Kleine-König
2009-06-16 18:00             ` Greg KH
2009-06-16 18:23               ` Uwe Kleine-König
2009-06-19 13:42                 ` [PATCH] platform_driver_register: warn if probe is in .init.text Uwe Kleine-König
2009-06-19 14:11                   ` Greg KH
2009-06-19 14:43                     ` Uwe Kleine-König
2009-06-29  7:55                       ` Uwe Kleine-König
2009-07-11  3:34                         ` Greg KH
2009-07-11 10:00                           ` Uwe Kleine-König
2009-07-11 17:05                             ` Greg KH
2009-07-11 20:52                               ` [PATCH] move acornfb's probe function to .devinit.text Uwe Kleine-König
2009-07-11 20:52                                 ` Uwe Kleine-König
2009-07-11 20:52                                 ` [PATCH] move am79c961's " Uwe Kleine-König
2009-07-11 20:52                                   ` [PATCH] move arcfb's " Uwe Kleine-König
2009-07-11 20:52                                     ` [PATCH] move at91_ether's " Uwe Kleine-König
2009-07-11 20:52                                       ` [PATCH] move cfag12864bfb's " Uwe Kleine-König
2009-07-11 20:52                                         ` [PATCH] move leds-clevo-mail's " Uwe Kleine-König
2009-07-11 20:52                                           ` [PATCH] move cobalt-lcd's " Uwe Kleine-König
2009-07-11 20:52                                             ` [PATCH] move corgi-ssp's " Uwe Kleine-König
2009-07-11 20:52                                               ` [PATCH] move efifb's " Uwe Kleine-König
2009-07-11 20:52                                                 ` [PATCH] move epson1355fb's " Uwe Kleine-König
2009-07-11 20:52                                                   ` [PATCH] move sh_flctl's " Uwe Kleine-König
2009-07-11 20:52                                                     ` [PATCH] move gbefb's " Uwe Kleine-König
2009-07-11 20:52                                                       ` [PATCH] move h1940-bt's " Uwe Kleine-König
2009-07-11 20:52                                                         ` [PATCH] move hgafb's " Uwe Kleine-König
2009-07-11 20:52                                                           ` [PATCH] move hitfb's " Uwe Kleine-König
2009-07-11 20:52                                                             ` [PATCH] move hp680-bl's " Uwe Kleine-König
2009-07-11 20:52                                                               ` [PATCH] move hp-wmi's " Uwe Kleine-König
2009-07-11 20:52                                                                 ` [PATCH] move jazzsonic's " Uwe Kleine-König
2009-07-11 20:52                                                                   ` [PATCH] move jornada_ssp's " Uwe Kleine-König
2009-07-11 20:52                                                                     ` [PATCH] move macsonic's " Uwe Kleine-König
2009-07-11 20:52                                                                       ` [PATCH] move meth's " Uwe Kleine-König
2009-07-11 20:52                                                                         ` [PATCH] move omap24xxcam's " Uwe Kleine-König
2009-07-11 20:52                                                                           ` [PATCH] move omap_hdq's " Uwe Kleine-König
2009-07-11 20:52                                                                             ` [PATCH] move i2c_omap's " Uwe Kleine-König
2009-07-11 20:52                                                                               ` [PATCH] move mmci-omap-hs's " Uwe Kleine-König
2009-07-11 20:52                                                                                 ` [PATCH] move orion_nand's " Uwe Kleine-König
2009-07-11 20:52                                                                                   ` [PATCH] move q40fb's " Uwe Kleine-König
2009-07-11 20:52                                                                                     ` [PATCH] move s3c241xfb's " Uwe Kleine-König
2009-07-11 20:52                                                                                       ` [PATCH] move sa11x0-fb's " Uwe Kleine-König
2009-07-11 20:52                                                                                         ` [PATCH] move sb1250-mac's " Uwe Kleine-König
2009-07-11 20:52                                                                                           ` [PATCH] move sgiseeq's " Uwe Kleine-König
2009-07-11 20:53                                                                                             ` [PATCH] move sgivwfb's " Uwe Kleine-König
2009-07-11 20:53                                                                                               ` [PATCH] move sgiwd93's " Uwe Kleine-König
2009-07-11 20:53                                                                                                 ` [PATCH] move sharpsl-pm's " Uwe Kleine-König
2009-07-11 20:53                                                                                                   ` [PATCH] move sh_mobile_lcdc_fb's " Uwe Kleine-König
2009-07-11 20:53                                                                                                     ` [PATCH] move snirm_53c710's " Uwe Kleine-König
2009-07-11 20:53                                                                                                       ` [PATCH] move stk17ta8's " Uwe Kleine-König
2009-07-11 20:53                                                                                                         ` [PATCH] move omap_udc's " Uwe Kleine-König
2009-07-11 20:53                                                                                                           ` [PATCH] move vesafb's " Uwe Kleine-König
2009-07-11 20:53                                                                                                             ` [PATCH] move vfb's " Uwe Kleine-König
2009-07-11 20:53                                                                                                               ` [PATCH] move vga16fb's " Uwe Kleine-König
2009-07-11 20:53                                                                                                                 ` [PATCH] move w100fb's " Uwe Kleine-König
2009-07-11 20:53                                                                                                                   ` [PATCH] move xtsonic's " Uwe Kleine-König
2009-07-11 22:26                                                                                                                   ` [PATCH] move w100fb's " Ian molton
2009-07-11 22:30                                                                                                           ` [PATCH] move omap_udc's " David Brownell
2009-07-12  8:35                                                                                                             ` Uwe Kleine-König
2009-07-12  8:47                                                                                                               ` Russell King
2009-07-12  9:30                                                                                                                 ` David Brownell
2009-07-12 13:17                                                                                                                 ` Russell King
2009-07-12 20:07                                                                                                                   ` David Brownell
2009-07-12 22:21                                                                                                                   ` David Brownell
2009-07-13  9:10                                                                                                                     ` Uwe Kleine-König
2009-07-13 21:31                                                                                                                       ` David Brownell
2009-07-12  9:37                                                                                                               ` David Brownell
2009-07-12 20:48                                                                                                             ` Uwe Kleine-König
2009-07-12 22:12                                                                                                               ` David Brownell
2009-07-13  9:12                                                                                                               ` [PATCH] don't add clevo_mail_led_driver's probe function to the driver struct Uwe Kleine-König
2009-08-13  9:59                                                                                                         ` [PATCH] move stk17ta8's probe function to .devinit.text Jiri Kosina
2009-10-09 15:24                                                                                                         ` Jiri Kosina
2009-10-09 18:33                                                                                                           ` Alessandro Zummo
2009-10-09 21:22                                                                                                             ` Jiri Kosina
2009-10-09 21:55                                                                                                               ` Alessandro Zummo
2009-07-12  0:36                                                                                           ` [PATCH] move sb1250-mac's " Maciej W. Rozycki
2009-07-13 19:37                                                                                   ` [PATCH] move orion_nand's " Nicolas Pitre
2009-07-14  8:09                                                                                     ` Uwe Kleine-König
2009-07-14 16:12                                                                                       ` Nicolas Pitre
2009-07-14 17:17                                                                                         ` Uwe Kleine-König
2009-07-21 20:46                                                                                         ` [PATCH] register orion_nand using platform_driver_probe Uwe Kleine-König
2009-07-21 20:46                                                                                           ` Uwe Kleine-König
2009-07-21 22:26                                                                                           ` Nicolas Pitre
2009-07-21 22:26                                                                                             ` Nicolas Pitre
2009-07-22  5:17                                                                                             ` Uwe Kleine-König
2009-07-22  5:17                                                                                               ` Uwe Kleine-König
2009-07-11 22:29                                                                                 ` [PATCH] move mmci-omap-hs's probe function to .devinit.text David Brownell
2009-07-21 20:36                                                                                   ` [PATCH] register mmci-omap-hs using platform_driver_probe Uwe Kleine-König
2009-07-22 17:38                                                                                     ` David Brownell
2009-07-21 15:14                                                                       ` [PATCH] move macsonic's probe function to .devinit.text Finn Thain
2009-07-21 15:40                                                                         ` [PATCH] macsonic, jazzsonic - fix oops on module unload Finn Thain
2009-07-21 19:22                                                                           ` David Miller
2009-07-21 19:20                                                                         ` [PATCH] move macsonic's probe function to .devinit.text Uwe Kleine-König
2009-07-21 19:20                                                                         ` David Miller
2009-07-21 19:40                                                                           ` Uwe Kleine-König
2009-07-21 19:41                                                                             ` David Miller
2009-09-19 23:09                                                     ` [PATCH] move sh_flctl's " David Woodhouse
2009-09-21  7:43                                                       ` Uwe Kleine-König
2009-07-13 13:51                                                 ` [PATCH] move efifb's " Peter Jones
2009-07-13  8:44                                               ` [PATCH] move corgi-ssp's " Eric Miao
2009-07-13  9:01                                                 ` Uwe Kleine-König
2009-07-11 22:27                                       ` [PATCH] move at91_ether's " David Brownell
2009-07-21 20:11                                         ` [PATCH] register at91_ether using platform_driver_probe Uwe Kleine-König
2009-07-22 17:37                                           ` David Brownell
2009-07-22 17:46                                           ` Andrew Victor
2009-07-22 18:24                                             ` David Miller
2009-09-07 14:19                               ` [PATCH] platform_driver_register: warn if probe is in .init.text Uwe Kleine-König
2010-01-22 17:06                                 ` Uwe Kleine-König
2010-01-22 17:38                                   ` Greg KH
2010-01-22 19:49                                     ` Uwe Kleine-König
2010-01-22 23:49                                       ` Dmitry Torokhov
2010-01-23  9:49                                         ` Uwe Kleine-König
2010-01-25 17:14                                           ` Dmitry Torokhov
2010-01-25 19:25                                             ` Uwe Kleine-König
2010-01-25 19:31                                               ` Dmitry Torokhov
2010-01-23 20:35                                       ` [PATCH 01/29] move acornfb's probe function to .devinit.text Uwe Kleine-König
2010-01-23 20:35                                         ` Uwe Kleine-König
2010-01-23 23:25                                         ` Alexey Dobriyan
2010-01-23 23:28                                         ` Alexey Dobriyan
2010-01-26  8:46                                           ` Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 02/29] move am79c961's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 03/29] move arcfb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 04/29] move cfag12864bfb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 05/29] move cobalt-lcd's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 06/29] move corgi-ssp's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 07/29] move efifb's " Uwe Kleine-König
2010-01-26 16:20                                         ` Peter Jones
2010-01-23 20:35                                       ` [PATCH 08/29] move epson1355fb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 09/29] move gbefb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 10/29] move h1940-bt's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 11/29] move hgafb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 12/29] move hitfb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 13/29] move hp-wmi's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 14/29] move jornada_ssp's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 15/29] move omap24xxcam's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 16/29] move omap_hdq's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 17/29] move i2c_omap's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 18/29] move q40fb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 19/29] move s3c241xfb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 20/29] move sa11x0-fb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 21/29] move sgivwfb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 22/29] move sgiwd93's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 23/29] move sharpsl-pm's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 24/29] move sh_mobile_lcdc_fb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 25/29] move snirm_53c710's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 26/29] move vesafb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 27/29] move vfb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 28/29] move vga16fb's " Uwe Kleine-König
2010-01-23 20:35                                       ` [PATCH 29/29] move w100fb's " Uwe Kleine-König
2010-01-24 21:09                                       ` [PATCH] platform_driver_register: warn if probe is in .init.text OGAWA Hirofumi
2010-01-26  8:47                                         ` Uwe Kleine-König
2010-01-28  1:14                                           ` Greg KH
2010-01-30 20:44                                             ` Uwe Kleine-König [this message]
2010-01-30 20:46                                               ` [PATCH 1/7] modpost: members of *driver structs should not point to __init functions Uwe Kleine-König
2010-01-30 20:46                                               ` [PATCH 2/7] modpost: define ALL_XYX{IN,EX}IT_SECTIONS Uwe Kleine-König
2010-01-30 20:46                                               ` [PATCH 3/7] modpost: give most mismatch constants a better name Uwe Kleine-König
2010-01-30 20:46                                               ` [PATCH 4/7] modpost: pass around const struct sectioncheck * instead of enum mismatch Uwe Kleine-König
2010-01-30 20:46                                               ` [PATCH 5/7] modpost: remove now unused NO_MISMATCH constant Uwe Kleine-König
2010-01-30 20:46                                               ` [PATCH 6/7] modpost: make symbol white list a per mismatch type variable Uwe Kleine-König
2010-01-30 20:46                                               ` [PATCH 7/7] modpost: don't allow *driver to reference .init.* Uwe Kleine-König
2010-01-31 16:02                                               ` [PATCH] platform_driver_register: warn if probe is in .init.text Sam Ravnborg
2010-01-31 20:13                                                 ` Uwe Kleine-König
2010-02-02 15:25                                                   ` Michal Marek
2010-02-01 14:57                                               ` [PATCH] i2c/imx: don't add probe function to the driver struct Uwe Kleine-König
2010-02-01 14:57                                                 ` Uwe Kleine-König
2010-01-26  8:59                                     ` [PATCH] platform_driver_register: warn if probe is in .init.text Uwe Kleine-König
2010-01-26 14:30                                       ` Greg KH
2010-01-28 18:02                                       ` Greg KH
2010-02-03  9:42                                         ` Uwe Kleine-König
2010-02-03 15:08                                           ` Greg KH
2010-02-04 19:56                                             ` [PATCH 1/9] platform-drivers: move probe to .devinit.text in arch/arm Uwe Kleine-König
2010-02-04 20:56                                               ` Dmitry Eremin-Solenikov
2010-02-04 21:09                                                 ` Kristoffer Ericson
2010-02-04 21:20                                               ` Arnaud Patard
2010-02-04 19:56                                             ` [PATCH 2/9] platform-drivers: move probe to .devinit.text in drivers/scsi Uwe Kleine-König
2010-02-04 20:25                                               ` Ralf Baechle
2010-02-04 21:31                                                 ` Uwe Kleine-König
2010-02-04 19:56                                             ` [PATCH 4/9] x86: move hp-wmi's probe function to .devinit.text Uwe Kleine-König
2010-02-04 20:05                                               ` Matthew Garrett
2010-02-04 19:56                                             ` [PATCH 5/9] i2c: move i2c_omap's " Uwe Kleine-König
2010-02-04 19:56                                             ` [PATCH 6/9] w1: move omap_hdq's " Uwe Kleine-König
2010-02-04 19:56                                             ` [PATCH 7/9] media: move omap24xxcam's " Uwe Kleine-König
2010-02-04 19:56                                             ` [PATCH 8/9] auxdisplay: move cfag12864bfb's " Uwe Kleine-König
2010-02-04 19:56                                             ` [PATCH 9/9] net: move am79c961's " Uwe Kleine-König
2010-02-04 20:05                                               ` David Miller
2010-02-04 20:06                                                 ` Uwe Kleine-König
2010-02-12 20:11                                                   ` David Miller
2010-02-17 20:46                                                   ` Greg KH
2010-02-17 21:15                                               ` patch net-move-am79c961-s-probe-function-to-.devinit.text.patch added to gregkh-2.6 tree gregkh
2009-09-21  7:54                               ` [PATCH] platform_driver_register: warn if probe is in .init.text Uwe Kleine-König
2009-07-11 18:59                             ` Greg KH
2009-07-11 20:46                               ` Uwe Kleine-König
2009-07-16 22:58                                 ` Greg KH
2009-07-17  8:34                                   ` Uwe Kleine-König

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=20100130204425.GA16345@pengutronix.de \
    --to=u.kleine-koenig@pengutronix.de \
    --cc=akpm@linux-foundation.org \
    --cc=greg@kroah.com \
    --cc=gregkh@suse.de \
    --cc=hirofumi@mail.parknet.co.jp \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rusty@rustcorp.com.au \
    --cc=sam@ravnborg.org \
    --cc=smaclennan@pikatech.com \
    /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.