Skip to content

Commit

Permalink
platform-drivers: move probe to .devinit.text in arch/arm
Browse files Browse the repository at this point in the history
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 <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Ben Dooks <[email protected]>
Cc: Dmitry Baryshkov <[email protected]>
Cc: Eric Miao <[email protected]>
Cc: Liam Girdwood <[email protected]>
Cc: Paul Sokolovsky <[email protected]>
Cc: Richard Purdie <[email protected]>
Cc: Russell King <[email protected]>
Acked-by: Arnaud Patard <[email protected]>
Acked-by: Dmitry Eremin-Solenikov <[email protected]>
Acked-by: Kristoffer Ericson <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
Uwe Kleine-König authored and gregkh committed Mar 8, 2010
1 parent 831fad2 commit 91a99df
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 4 deletions.
2 changes: 1 addition & 1 deletion arch/arm/mach-pxa/corgi_ssp.c
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ void __init corgi_ssp_set_machinfo(struct corgissp_machinfo *machinfo)
ssp_machinfo = machinfo;
}

static int __init corgi_ssp_probe(struct platform_device *dev)
static int __devinit corgi_ssp_probe(struct platform_device *dev)
{
int ret;

Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-pxa/sharpsl_pm.c
Original file line number Diff line number Diff line change
Expand Up @@ -900,7 +900,7 @@ static struct platform_suspend_ops sharpsl_pm_ops = {
};
#endif

static int __init sharpsl_pm_probe(struct platform_device *pdev)
static int __devinit sharpsl_pm_probe(struct platform_device *pdev)
{
int ret;

Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-s3c2410/h1940-bluetooth.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ static const struct rfkill_ops h1940bt_rfkill_ops = {
.set_block = h1940bt_set_block,
};

static int __init h1940bt_probe(struct platform_device *pdev)
static int __devinit h1940bt_probe(struct platform_device *pdev)
{
struct rfkill *rfk;
int ret = 0;
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-sa1100/jornada720_ssp.c
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ void jornada_ssp_end(void)
};
EXPORT_SYMBOL(jornada_ssp_end);

static int __init jornada_ssp_probe(struct platform_device *dev)
static int __devinit jornada_ssp_probe(struct platform_device *dev)
{
int ret;

Expand Down

0 comments on commit 91a99df

Please sign in to comment.