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>
This commit is contained in:
parent
91a99dfc6b
commit
1b07193b34
|
@ -226,7 +226,7 @@ static struct scsi_host_template sgiwd93_template = {
|
||||||
.use_clustering = DISABLE_CLUSTERING,
|
.use_clustering = DISABLE_CLUSTERING,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init sgiwd93_probe(struct platform_device *pdev)
|
static int __devinit sgiwd93_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct sgiwd93_platform_data *pd = pdev->dev.platform_data;
|
struct sgiwd93_platform_data *pd = pdev->dev.platform_data;
|
||||||
unsigned char *wdregs = pd->wdregs;
|
unsigned char *wdregs = pd->wdregs;
|
||||||
|
|
|
@ -64,7 +64,7 @@ static struct scsi_host_template snirm710_template = {
|
||||||
.module = THIS_MODULE,
|
.module = THIS_MODULE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init snirm710_probe(struct platform_device *dev)
|
static int __devinit snirm710_probe(struct platform_device *dev)
|
||||||
{
|
{
|
||||||
unsigned long base;
|
unsigned long base;
|
||||||
struct NCR_700_Host_Parameters *hostdata;
|
struct NCR_700_Host_Parameters *hostdata;
|
||||||
|
|
Loading…
Reference in New Issue