Commit c2e13037e6794bd0d9de3f9ecabf5615f15c160b
Committed by
Greg Kroah-Hartman
1 parent
1b07193b34
Exists in
master
and in
39 other branches
platform-drivers: move probe to .devinit.text in drivers/video
A pointer to a probe callback 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. 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> Cc: Adrian Bunk <bunk@stusta.de> Cc: Alberto Mardegan <mardy@users.sourceforge.net> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Andriy Skulysh <askulysh@gmail.com> Cc: Antonino Daplas <adaplas@gmail.com> Cc: Anton Vorontsov <avorontsov@ru.mvista.com> Cc: Ben Dooks <ben-linux@fluff.org> Cc: Chandramouli Narayanan <mouli@linux.intel.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Frans Pop <elendil@planet.nl> Cc: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> Cc: Greg Kroah-Hartman <gregkh@suse.de> Cc: Helge Deller <deller@gmx.de> Cc: Huang Ying <ying.huang@intel.com> Cc: Ian Molton <spyro@f2s.com> Cc: Joshua Kinard <kumba@gentoo.org> Cc: Kaj-Michael Lang <milang@tal.org> Cc: Krzysztof Helt <krzysztof.h1@poczta.fm> Cc: linux-fbdev-devel@lists.sourceforge.net Cc: Maciej W. Rozycki <macro@linux-mips.org> Cc: Magnus Damm <damm@igel.co.jp> Cc: Martin Michlmayr <tbm@cyrius.com> Cc: Matthias Kaehlcke <matthias@kaehlcke.net> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Pavel Machek <pavel@suse.cz> Cc: Philipp Zabel <philipp.zabel@gmail.com> Cc: Richard Purdie <rpurdie@rpsys.net> Cc: Roel Kluin <roel.kluin@gmail.com> Cc: Roland Stigge <stigge@antcom.de> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Cc: Vincent Sanders <vince@simtec.co.uk> Cc: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> Acked-by: Ralf Baechle <ralf@linux-mips.org> Acked-by: Arnaud Patard <arnaud.patard@rtp-net.org> Acked-by: James Simmons <jsimmons@infradead.org> Acked-by: Peter Jones <pjones@redhat.com> Acked-by: Jaya Kumar <jayakumar.lkml@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Showing 17 changed files with 18 additions and 18 deletions Side-by-side Diff
- drivers/video/acornfb.c
- drivers/video/arcfb.c
- drivers/video/cobalt_lcdfb.c
- drivers/video/efifb.c
- drivers/video/epson1355fb.c
- drivers/video/gbefb.c
- drivers/video/hgafb.c
- drivers/video/hitfb.c
- drivers/video/q40fb.c
- drivers/video/s3c2410fb.c
- drivers/video/sa1100fb.c
- drivers/video/sgivwfb.c
- drivers/video/sh_mobile_lcdcfb.c
- drivers/video/vesafb.c
- drivers/video/vfb.c
- drivers/video/vga16fb.c
- drivers/video/w100fb.c
drivers/video/acornfb.c
... | ... | @@ -1221,7 +1221,7 @@ |
1221 | 1221 | printk("acornfb: freed %dK memory\n", mb_freed); |
1222 | 1222 | } |
1223 | 1223 | |
1224 | -static int __init acornfb_probe(struct platform_device *dev) | |
1224 | +static int __devinit acornfb_probe(struct platform_device *dev) | |
1225 | 1225 | { |
1226 | 1226 | unsigned long size; |
1227 | 1227 | u_int h_sync, v_sync; |
drivers/video/arcfb.c
drivers/video/cobalt_lcdfb.c
... | ... | @@ -287,7 +287,7 @@ |
287 | 287 | .fb_cursor = cobalt_lcdfb_cursor, |
288 | 288 | }; |
289 | 289 | |
290 | -static int __init cobalt_lcdfb_probe(struct platform_device *dev) | |
290 | +static int __devinit cobalt_lcdfb_probe(struct platform_device *dev) | |
291 | 291 | { |
292 | 292 | struct fb_info *info; |
293 | 293 | struct resource *res; |
drivers/video/efifb.c
drivers/video/epson1355fb.c
drivers/video/gbefb.c
drivers/video/hgafb.c
drivers/video/hitfb.c
... | ... | @@ -325,7 +325,7 @@ |
325 | 325 | .fb_imageblit = cfb_imageblit, |
326 | 326 | }; |
327 | 327 | |
328 | -static int __init hitfb_probe(struct platform_device *dev) | |
328 | +static int __devinit hitfb_probe(struct platform_device *dev) | |
329 | 329 | { |
330 | 330 | unsigned short lcdclor, ldr3, ldvndr; |
331 | 331 | struct fb_info *info; |
drivers/video/q40fb.c
drivers/video/s3c2410fb.c
... | ... | @@ -1004,12 +1004,12 @@ |
1004 | 1004 | return ret; |
1005 | 1005 | } |
1006 | 1006 | |
1007 | -static int __init s3c2410fb_probe(struct platform_device *pdev) | |
1007 | +static int __devinit s3c2410fb_probe(struct platform_device *pdev) | |
1008 | 1008 | { |
1009 | 1009 | return s3c24xxfb_probe(pdev, DRV_S3C2410); |
1010 | 1010 | } |
1011 | 1011 | |
1012 | -static int __init s3c2412fb_probe(struct platform_device *pdev) | |
1012 | +static int __devinit s3c2412fb_probe(struct platform_device *pdev) | |
1013 | 1013 | { |
1014 | 1014 | return s3c24xxfb_probe(pdev, DRV_S3C2412); |
1015 | 1015 | } |
drivers/video/sa1100fb.c
drivers/video/sgivwfb.c
drivers/video/sh_mobile_lcdcfb.c
... | ... | @@ -943,7 +943,7 @@ |
943 | 943 | |
944 | 944 | static int sh_mobile_lcdc_remove(struct platform_device *pdev); |
945 | 945 | |
946 | -static int __init sh_mobile_lcdc_probe(struct platform_device *pdev) | |
946 | +static int __devinit sh_mobile_lcdc_probe(struct platform_device *pdev) | |
947 | 947 | { |
948 | 948 | struct fb_info *info; |
949 | 949 | struct sh_mobile_lcdc_priv *priv; |
drivers/video/vesafb.c
drivers/video/vfb.c
drivers/video/vga16fb.c
drivers/video/w100fb.c