diff options
author | Stephen Neuendorffer <stephen.neuendorffer@xilinx.com> | 2008-04-02 12:52:13 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@linux.vnet.ibm.com> | 2008-04-02 21:29:32 -0400 |
commit | 19a74263f49dce2b96e2213f7f4c029cedbbf0ce (patch) | |
tree | 07c4a2b28b8fcb452cc15ef19d065987bd4dd09c /drivers/serial/of_serial.c | |
parent | 5f91925c89c39e77c170de9366ffa5144a8dd8ec (diff) |
[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.c | 4 |
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, | |||
56 | port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP | 56 | port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP |
57 | | UPF_FIXED_PORT; | 57 | | UPF_FIXED_PORT; |
58 | port->dev = &ofdev->dev; | 58 | port->dev = &ofdev->dev; |
59 | port->custom_divisor = *clk / (16 * (*spd)); | 59 | /* If current-speed was set, then try not to change it. */ |
60 | if (spd) | ||
61 | port->custom_divisor = *clk / (16 * (*spd)); | ||
60 | 62 | ||
61 | return 0; | 63 | return 0; |
62 | } | 64 | } |