All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] move jazzsonic's probe function to .devinit.text
@ 2009-07-21 21:25 Uwe Kleine-König
  2009-07-21 21:25 ` [PATCH] move macsonic's " Uwe Kleine-König
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: Uwe Kleine-König @ 2009-07-21 21:25 UTC (permalink / raw)
  To: netdev
  Cc: Jeff Garzik, David S. Miller, Thomas Bogendoerfer, Finn Thain,
	Geert Uytterhoeven, Andrew Morton, Greg Kroah-Hartman

A pointer to jazz_sonic_probe is passed to the core via
platform_driver_register and so the function must not disappear when the
.init sections are discarded.  Otherwise (if also having HOTPLUG=y)
unbinding and binding a device to the driver via sysfs will result in an
oops as does a device being registered late.

As noticed by Geert Uytterhoeven sonic_probe1 is called by
jazz_sonic_probe, so the former has to move to .devinit.text, too.

An alternative to this patch is using platform_driver_probe instead of
platform_driver_register plus removing the pointer to the probe function
from the struct platform_driver.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Ralf Baechle <ralf@linux-mips.org>
Cc: Jeff Garzik <jeff@garzik.org>
Cc: David S. Miller <davem@davemloft.net>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Finn Thain <fthain@telegraphics.com.au>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: netdev@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/net/jazzsonic.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/jazzsonic.c b/drivers/net/jazzsonic.c
index d12106b..8baf595 100644
--- a/drivers/net/jazzsonic.c
+++ b/drivers/net/jazzsonic.c
@@ -108,7 +108,7 @@ static const struct net_device_ops sonic_netdev_ops = {
 	.ndo_set_mac_address	= eth_mac_addr,
 };
 
-static int __init sonic_probe1(struct net_device *dev)
+static int __devinit sonic_probe1(struct net_device *dev)
 {
 	static unsigned version_printed;
 	unsigned int silicon_revision;
@@ -211,7 +211,7 @@ out:
  * Probe for a SONIC ethernet controller on a Mips Jazz board.
  * Actually probing is superfluous but we're paranoid.
  */
-static int __init jazz_sonic_probe(struct platform_device *pdev)
+static int __devinit jazz_sonic_probe(struct platform_device *pdev)
 {
 	struct net_device *dev;
 	struct sonic_local *lp;
-- 
tg: (aea1f79..) t/platsection/jazz_sonic_driver (depends on: linus/master)

^ permalink raw reply related	[flat|nested] 15+ messages in thread
* Re: [PATCH] platform_driver_register:  warn if probe is in .init.text
@ 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
  0 siblings, 1 reply; 15+ messages in thread
From: Greg KH @ 2009-07-11 17:05 UTC (permalink / raw)
  To: Uwe Kleine-König; +Cc: linux-kernel

On Sat, Jul 11, 2009 at 12:00:14PM +0200, Uwe Kleine-König wrote:
> Hi Greg,
> 
> > > Are you conviced and took the patch or did you give up to convince me?
> > 
> > Heh, no, sorry, it got burried in my queue.
> > 
> > > I still think the patch is correct and I'd like to have it applied.
> > 
> > Ok, let's test it out in the linux-next tree for a while to make sure it
> > works properly.  Care to send me an updated version?
> I updated to latest Linus' master.  It applies to linux-next from
> Fri Jul 10 14:44:30 2009 +1000 as is.

Thanks, I'll apply it later today to my trees.

> Back some time I sent a series that fixes many of these bugs.  I will
> update it later today and resend.

Thanks, that would be good to have, to keep the noise down for devices
we already know about.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 15+ messages in thread
* platform_driver's probe functions must not be located in .init.text
@ 2009-01-12 22:12 Uwe Kleine-König
  2009-01-12 22:25 ` [PATCH] move xtsonic's probe function to .devinit.text Uwe Kleine-König
  0 siblings, 1 reply; 15+ messages in thread
From: Uwe Kleine-König @ 2009-01-12 22:12 UTC (permalink / raw)
  To: linux-kernel

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 7988 bytes --]

Hello,

if the probe function of a platform_driver lives in .init.text (i.e. is
defined using __init) registering a device after the .init sections are
discarded results in an oops.  You can test that by doing

	echo $drivername.$somevalidid > /sys/bus/platform/drivers/$drivername/unbind
	echo $drivername.$somevalidid > /sys/bus/platform/drivers/$drivername/bind

As a reply to this mail I send 62 patches that fix this kind of error by
moving the respective probe functions to .devinit.text.

This should be safe in general as it only increases the lifetime for the
respective functions.

The alternative is using platform_driver_probe instead of
platform_driver_register plus removing the pointer to the probe function
from the struct platform_driver.  But I choosed changing the section as
this is less intrusive though probably the latter would be the better
fix because it saves some memory.

You cannot blindly change to use platform_driver_probe because if the
devices are only registered after that call (but while .init is still
valid) the driver is already gone.  This is hardly checkable for me
because I don't have the hardware for most drivers I fixed.

Shortlog and diffstat are below.  You can fetch this series from

	git://git.pengutronix.de/git/ukl/linux-2.6.git platsection-master

based on v2.6.29-rc1.

Best regards
Uwe

Uwe Kleine-König (62):
      move acornfb's probe function to .devinit.text
      move am79c961's probe function to .devinit.text
      move arcfb's probe function to .devinit.text
      move at91_ether's probe function to .devinit.text
      move at91_wdt's probe function to .devinit.text
      move bf54x-lq043's probe function to .devinit.text
      move bfin-t350mcqb's probe function to .devinit.text
      move cfag12864bfb's probe function to .devinit.text
      move leds-clevo-mail's probe function to .devinit.text
      move cobalt-lcd's probe function to .devinit.text
      move corgi-keyboard's probe function to .devinit.text
      move corgi-ssp's probe function to .devinit.text
      move corgi-ts's probe function to .devinit.text
      move efifb's probe function to .devinit.text
      move orion-ehci's probe function to .devinit.text
      move epson1355fb's probe function to .devinit.text
      move sh_flctl's probe function to .devinit.text
      move gbefb's probe function to .devinit.text
      move h1940-bt's probe function to .devinit.text
      move h1940-leds's probe function to .devinit.text
      move hgafb's probe function to .devinit.text
      move hitfb's probe function to .devinit.text
      move hp680-bl's probe function to .devinit.text
      move hp-wmi's probe function to .devinit.text
      move jazzsonic's probe function to .devinit.text
      move jornada_ssp's probe function to .devinit.text
      move ks8695_wdt's probe function to .devinit.text
      move macsonic's probe function to .devinit.text
      move meth's probe function to .devinit.text
      move mmci-omap's probe function to .devinit.text
      move mailbox's probe function to .devinit.text
      move omap24xxcam's probe function to .devinit.text
      move mailbox's probe function to .devinit.text
      move omap_hdq's probe function to .devinit.text
      move omap-keypad's probe function to .devinit.text
      move omap_rng's probe function to .devinit.text
      move omap_wdt's probe function to .devinit.text
      move orion_nand's probe function to .devinit.text
      move gen_nand's probe function to .devinit.text
      move q40fb's probe function to .devinit.text
      move r8a66597_hcd's probe function to .devinit.text
      move s3c241xfb's probe function to .devinit.text
      move sa11x0-fb's probe function to .devinit.text
      move flash's probe function to .devinit.text
      move sb1250-mac's probe function to .devinit.text
      move sgiseeq's probe function to .devinit.text
      move sgivwfb's probe function to .devinit.text
      move sgiwd93's probe function to .devinit.text
      move sharpsl-pm's probe function to .devinit.text
      move sh_mobile_lcdc_fb's probe function to .devinit.text
      move snd_powermac's probe function to .devinit.text
      move snirm_53c710's probe function to .devinit.text
      move spitz-keyboard's probe function to .devinit.text
      move stk17ta8's probe function to .devinit.text
      move omap_udc's probe function to .devinit.text
      move vesafb's probe function to .devinit.text
      move vfb's probe function to .devinit.text
      move vga16fb's probe function to .devinit.text
      move w100fb's probe function to .devinit.text
      move wm8400-regulator's probe function to .devinit.text
      move xilinx_spi's probe function to .devinit.text
      move xtsonic's probe function to .devinit.text

 arch/arm/common/sharpsl_pm.c            |    2 +-
 arch/arm/mach-omap1/mailbox.c           |    2 +-
 arch/arm/mach-omap2/mailbox.c           |    2 +-
 arch/arm/mach-pxa/corgi_ssp.c           |    2 +-
 arch/arm/mach-s3c2410/h1940-bluetooth.c |    2 +-
 arch/arm/mach-sa1100/jornada720_ssp.c   |    2 +-
 drivers/auxdisplay/cfag12864bfb.c       |    2 +-
 drivers/char/hw_random/omap-rng.c       |    2 +-
 drivers/input/keyboard/corgikbd.c       |    2 +-
 drivers/input/keyboard/omap-keypad.c    |    2 +-
 drivers/input/keyboard/spitzkbd.c       |    2 +-
 drivers/input/touchscreen/corgi_ts.c    |    2 +-
 drivers/leds/leds-clevo-mail.c          |    2 +-
 drivers/leds/leds-h1940.c               |    2 +-
 drivers/media/video/omap24xxcam.c       |    2 +-
 drivers/mmc/host/omap.c                 |    2 +-
 drivers/mtd/maps/sa1100-flash.c         |    2 +-
 drivers/mtd/nand/orion_nand.c           |    2 +-
 drivers/mtd/nand/plat_nand.c            |    2 +-
 drivers/mtd/nand/sh_flctl.c             |    2 +-
 drivers/net/arm/am79c961a.c             |    2 +-
 drivers/net/arm/at91_ether.c            |    2 +-
 drivers/net/jazzsonic.c                 |    2 +-
 drivers/net/macsonic.c                  |    2 +-
 drivers/net/meth.c                      |    2 +-
 drivers/net/sb1250-mac.c                |    2 +-
 drivers/net/sgiseeq.c                   |    2 +-
 drivers/net/xtsonic.c                   |    2 +-
 drivers/platform/x86/hp-wmi.c           |    4 ++--
 drivers/regulator/wm8400-regulator.c    |    2 +-
 drivers/rtc/rtc-stk17ta8.c              |    2 +-
 drivers/scsi/sgiwd93.c                  |    2 +-
 drivers/scsi/sni_53c710.c               |    2 +-
 drivers/spi/xilinx_spi.c                |    2 +-
 drivers/usb/gadget/omap_udc.c           |    2 +-
 drivers/usb/host/ehci-orion.c           |    2 +-
 drivers/usb/host/r8a66597-hcd.c         |    2 +-
 drivers/video/acornfb.c                 |    2 +-
 drivers/video/arcfb.c                   |    2 +-
 drivers/video/backlight/hp680_bl.c      |    2 +-
 drivers/video/bf54x-lq043fb.c           |    2 +-
 drivers/video/bfin-t350mcqb-fb.c        |    2 +-
 drivers/video/cobalt_lcdfb.c            |    2 +-
 drivers/video/efifb.c                   |    2 +-
 drivers/video/epson1355fb.c             |    2 +-
 drivers/video/gbefb.c                   |    2 +-
 drivers/video/hgafb.c                   |    2 +-
 drivers/video/hitfb.c                   |    2 +-
 drivers/video/q40fb.c                   |    2 +-
 drivers/video/s3c2410fb.c               |    4 ++--
 drivers/video/sa1100fb.c                |    2 +-
 drivers/video/sgivwfb.c                 |    2 +-
 drivers/video/sh_mobile_lcdcfb.c        |    2 +-
 drivers/video/vesafb.c                  |    2 +-
 drivers/video/vfb.c                     |    2 +-
 drivers/video/vga16fb.c                 |    2 +-
 drivers/video/w100fb.c                  |    2 +-
 drivers/w1/masters/omap_hdq.c           |    4 ++--
 drivers/watchdog/at91rm9200_wdt.c       |    2 +-
 drivers/watchdog/ks8695_wdt.c           |    2 +-
 drivers/watchdog/omap_wdt.c             |    2 +-
 sound/ppc/powermac.c                    |    2 +-
 62 files changed, 65 insertions(+), 65 deletions(-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2009-07-22  3:13 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-21 21:25 [PATCH] move jazzsonic's probe function to .devinit.text Uwe Kleine-König
2009-07-21 21:25 ` [PATCH] move macsonic's " Uwe Kleine-König
2009-07-22  3:13   ` David Miller
2009-07-21 21:25 ` [PATCH] move meth's " Uwe Kleine-König
2009-07-22  3:12   ` David Miller
2009-07-21 21:25 ` [PATCH] move sb1250-mac's " Uwe Kleine-König
2009-07-22  3:13   ` David Miller
2009-07-21 21:25 ` [PATCH] move sgiseeq's " Uwe Kleine-König
2009-07-22  3:13   ` David Miller
2009-07-21 21:25 ` [PATCH] move xtsonic's " Uwe Kleine-König
2009-07-22  0:00   ` Chris Zankel
2009-07-22  3:13   ` David Miller
2009-07-22  3:13 ` [PATCH] move jazzsonic's " David Miller
  -- strict thread matches above, loose matches on Subject: below --
2009-07-11 17:05 [PATCH] platform_driver_register: warn if probe is in .init.text 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   ` [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-01-12 22:12 platform_driver's probe functions must not be located in .init.text Uwe Kleine-König
2009-01-12 22:25 ` [PATCH] move xtsonic's probe function to .devinit.text Uwe Kleine-König

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.