diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2009-04-02 19:47:41 +0200 |
---|---|---|
committer | Pierre Ossman <pierre@ossman.eu> | 2009-06-13 22:42:57 +0200 |
commit | 7ceeb6a40a4dcc9b9cded6127ad5cdddb79b40ad (patch) | |
tree | ecd7f0907b2bf5ccf2f282c9297334e1c1b56060 /drivers/mmc | |
parent | 5cf20aa557e8f9dd5af302b8f33972082479753a (diff) | |
download | op-kernel-dev-7ceeb6a40a4dcc9b9cded6127ad5cdddb79b40ad.zip op-kernel-dev-7ceeb6a40a4dcc9b9cded6127ad5cdddb79b40ad.tar.gz |
mmc/omap: make mmci-omap using platform_driver_probe
A pointer to mmc_omap_probe which lives in .init.text is passed to the
core via platform_driver_register and so the kernel might oops if probe
is called after the init code is discarded.
As requested by David Brownell platform_driver_probe is used instead of
moving the probe function to .devinit.text. This saves some memory, but
might have the downside that a device being registered after the call to
mmc_omap_init but before the init sections are discarded will not be
bound anymore to the driver.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Pierre Ossman <pierre@ossman.eu>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/omap.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c index dceb5ee..e7a331d 100644 --- a/drivers/mmc/host/omap.c +++ b/drivers/mmc/host/omap.c @@ -1593,7 +1593,6 @@ static int mmc_omap_resume(struct platform_device *pdev) #endif static struct platform_driver mmc_omap_driver = { - .probe = mmc_omap_probe, .remove = mmc_omap_remove, .suspend = mmc_omap_suspend, .resume = mmc_omap_resume, @@ -1605,7 +1604,7 @@ static struct platform_driver mmc_omap_driver = { static int __init mmc_omap_init(void) { - return platform_driver_register(&mmc_omap_driver); + return platform_driver_probe(&mmc_omap_driver, mmc_omap_probe); } static void __exit mmc_omap_exit(void) |