aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2010-02-04 14:56:50 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2010-03-07 20:04:50 -0500
commit1b07193b34c1bc1c184e2d53a62633a73ea9b0a0 (patch)
tree05f0b4956515b20d2e3aa465d8d7fe6fedc2263c
parent91a99dfc6b57f2e956d10d41123234fad3399212 (diff)
platform-drivers: move probe to .devinit.text in drivers/scsi
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: Andrew Morton <akpm@linux-foundation.org> Cc: David Brownell <dbrownell@users.sourceforge.net> Cc: Dmitri Vorobiev <dmitri.vorobiev@movial.fi> Cc: Henrik Kretzschmar <henne@nachtwindheim.de> Cc: James Bottomley <James.Bottomley@HansenPartnership.com> Cc: Kay Sievers <kay.sievers@vrfy.org> Cc: peter fuerst <post@pfrst.de> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Acked-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/scsi/sgiwd93.c2
-rw-r--r--drivers/scsi/sni_53c710.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/drivers/scsi/sgiwd93.c b/drivers/scsi/sgiwd93.c
index 0807b260268b..fef0e3c75b16 100644
--- a/drivers/scsi/sgiwd93.c
+++ b/drivers/scsi/sgiwd93.c
@@ -226,7 +226,7 @@ static struct scsi_host_template sgiwd93_template = {
226 .use_clustering = DISABLE_CLUSTERING, 226 .use_clustering = DISABLE_CLUSTERING,
227}; 227};
228 228
229static int __init sgiwd93_probe(struct platform_device *pdev) 229static int __devinit sgiwd93_probe(struct platform_device *pdev)
230{ 230{
231 struct sgiwd93_platform_data *pd = pdev->dev.platform_data; 231 struct sgiwd93_platform_data *pd = pdev->dev.platform_data;
232 unsigned char *wdregs = pd->wdregs; 232 unsigned char *wdregs = pd->wdregs;
diff --git a/drivers/scsi/sni_53c710.c b/drivers/scsi/sni_53c710.c
index 37b3359e863e..56cf0bb4ed1f 100644
--- a/drivers/scsi/sni_53c710.c
+++ b/drivers/scsi/sni_53c710.c
@@ -64,7 +64,7 @@ static struct scsi_host_template snirm710_template = {
64 .module = THIS_MODULE, 64 .module = THIS_MODULE,
65}; 65};
66 66
67static int __init snirm710_probe(struct platform_device *dev) 67static int __devinit snirm710_probe(struct platform_device *dev)
68{ 68{
69 unsigned long base; 69 unsigned long base;
70 struct NCR_700_Host_Parameters *hostdata; 70 struct NCR_700_Host_Parameters *hostdata;