[087/145] serial: imx: fix NULL dereference Oops when pdata == NULL

From: Greg KH
Date: Fri Mar 12 2010 - 19:50:20 EST


2.6.32-stable review patch. If anyone has any objections, please let me know.

----------------
From: Baruch Siach <baruch@xxxxxxxxxx>

commit bbcd18d1b37413d25eaf4580682b1b8e4a09ff5e upstream.

The platform code doesn't have to provide platform data to get sensible
default behaviour from the imx serial driver.

This patch does not handle NULL dereference in the IrDA case, which still
requires a valid platform data pointer (in imx_startup()/imx_shutdown()),
since I don't know whether there is a sensible default behaviour, or
should the operation just fail cleanly.

Signed-off-by: Baruch Siach <baruch@xxxxxxxxxx>
Cc: Baruch Siach <baruch@xxxxxxxxxx>
Cc: Alan Cox <alan@xxxxxxxxxxxxxxx>
Cc: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
Cc: Oskar Schirmer <os@xxxxxxxxx>
Cc: Fabian Godehardt <fg@xxxxxxxxx>
Cc: Daniel Glöckner <dg@xxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>

---
drivers/serial/imx.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/serial/imx.c
+++ b/drivers/serial/imx.c
@@ -1279,7 +1279,7 @@ static int serial_imx_probe(struct platf
sport->use_irda = 1;
#endif

- if (pdata->init) {
+ if (pdata && pdata->init) {
ret = pdata->init(pdev);
if (ret)
goto clkput;
@@ -1292,7 +1292,7 @@ static int serial_imx_probe(struct platf

return 0;
deinit:
- if (pdata->exit)
+ if (pdata && pdata->exit)
pdata->exit(pdev);
clkput:
clk_put(sport->clk);
@@ -1321,7 +1321,7 @@ static int serial_imx_remove(struct plat

clk_disable(sport->clk);

- if (pdata->exit)
+ if (pdata && pdata->exit)
pdata->exit(pdev);

iounmap(sport->port.membase);


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/