summaryrefslogtreecommitdiff
path: root/drivers/serial/of_serial.c
diff options
context:
space:
mode:
authorStephen Neuendorffer <stephen.neuendorffer@xilinx.com>2008-04-02 20:52:13 +0400
committerJosh Boyer <jwboyer@linux.vnet.ibm.com>2008-04-03 05:29:32 +0400
commit19a74263f49dce2b96e2213f7f4c029cedbbf0ce (patch)
tree07c4a2b28b8fcb452cc15ef19d065987bd4dd09c /drivers/serial/of_serial.c
parent5f91925c89c39e77c170de9366ffa5144a8dd8ec (diff)
downloadlinux-19a74263f49dce2b96e2213f7f4c029cedbbf0ce.tar.xz
[POWERPC] of_serial: Fix possible null dereference.
The of_serial driver queries the current-speed property and attempts to use it to register the custom_divisor property of the uart_port. However, if current-speed is not set, then this code will dereference a bad pointer. The fix is to only set custom_divisor when a current-speed property appears in the device tree. Signed-off-by: Stephen Neuendorffer <stephen.neuendorffer@xilinx.com> Signed-off-by: John Linn <john.linn@xilinx.com> Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
Diffstat (limited to 'drivers/serial/of_serial.c')
-rw-r--r--drivers/serial/of_serial.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/serial/of_serial.c b/drivers/serial/of_serial.c
index c0e50a461055..8aacfb78deab 100644
--- a/drivers/serial/of_serial.c
+++ b/drivers/serial/of_serial.c
@@ -56,7 +56,9 @@ static int __devinit of_platform_serial_setup(struct of_device *ofdev,
port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP
| UPF_FIXED_PORT;
port->dev = &ofdev->dev;
- port->custom_divisor = *clk / (16 * (*spd));
+ /* If current-speed was set, then try not to change it. */
+ if (spd)
+ port->custom_divisor = *clk / (16 * (*spd));
return 0;
}