[PATCH resend 1/2] tty: omap-serial: fix division by zero

2014-09-25 Thread Frans Klaver
If the chosen baud rate is large enough (e.g. 3.5 megabaud), the
calculated n values in serial_omap_is_baud_mode16() may become 0. This
causes a division by zero when calculating the difference between
calculated and desired baud rates. To prevent this, cap the n13 and n16
values on 1.

Division by zero in kernel.
[c00132e0] (unwind_backtrace) from [c00112ec] (show_stack+0x10/0x14)
[c00112ec] (show_stack) from [c01ed7bc] (Ldiv0+0x8/0x10)
[c01ed7bc] (Ldiv0) from [c023805c] (serial_omap_baud_is_mode16+0x4c/0x68)
[c023805c] (serial_omap_baud_is_mode16) from [c02396b4] 
(serial_omap_set_termios+0x90/0x8d8)
[c02396b4] (serial_omap_set_termios) from [c0230a0c] 
(uart_change_speed+0xa4/0xa8)
[c0230a0c] (uart_change_speed) from [c0231798] (uart_set_termios+0xa0/0x1fc)
[c0231798] (uart_set_termios) from [c022bb44] (tty_set_termios+0x248/0x2c0)
[c022bb44] (tty_set_termios) from [c022c17c] (set_termios+0x248/0x29c)
[c022c17c] (set_termios) from [c022c3e4] (tty_mode_ioctl+0x1c8/0x4e8)
[c022c3e4] (tty_mode_ioctl) from [c0227e70] (tty_ioctl+0xa94/0xb18)
[c0227e70] (tty_ioctl) from [c00cf45c] (do_vfs_ioctl+0x4a0/0x560)
[c00cf45c] (do_vfs_ioctl) from [c00cf568] (SyS_ioctl+0x4c/0x74)
[c00cf568] (SyS_ioctl) from [c000e480] (ret_fast_syscall+0x0/0x30)

Signed-off-by: Frans Klaver frans.kla...@xsens.com
---
Resend to add sta...@vger.kernel.org to CC. As far as I know, this applies to
v3.9 and up.

Thanks,
Frans

 drivers/tty/serial/omap-serial.c | 12 ++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index d017cec..e454b7c 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -254,8 +254,16 @@ serial_omap_baud_is_mode16(struct uart_port *port, 
unsigned int baud)
 {
unsigned int n13 = port-uartclk / (13 * baud);
unsigned int n16 = port-uartclk / (16 * baud);
-   int baudAbsDiff13 = baud - (port-uartclk / (13 * n13));
-   int baudAbsDiff16 = baud - (port-uartclk / (16 * n16));
+   int baudAbsDiff13;
+   int baudAbsDiff16;
+
+   if (n13 == 0)
+   n13 = 1;
+   if (n16 == 0)
+   n16 = 1;
+
+   baudAbsDiff13 = baud - (port-uartclk / (13 * n13));
+   baudAbsDiff16 = baud - (port-uartclk / (16 * n16));
if (baudAbsDiff13  0)
baudAbsDiff13 = -baudAbsDiff13;
if (baudAbsDiff16  0)
-- 
2.1.0

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH resend 1/2] tty: omap-serial: fix division by zero

2014-09-25 Thread Greg Kroah-Hartman
On Thu, Sep 25, 2014 at 11:19:51AM +0200, Frans Klaver wrote:
 If the chosen baud rate is large enough (e.g. 3.5 megabaud), the
 calculated n values in serial_omap_is_baud_mode16() may become 0. This
 causes a division by zero when calculating the difference between
 calculated and desired baud rates. To prevent this, cap the n13 and n16
 values on 1.
 
 Division by zero in kernel.
 [c00132e0] (unwind_backtrace) from [c00112ec] (show_stack+0x10/0x14)
 [c00112ec] (show_stack) from [c01ed7bc] (Ldiv0+0x8/0x10)
 [c01ed7bc] (Ldiv0) from [c023805c] (serial_omap_baud_is_mode16+0x4c/0x68)
 [c023805c] (serial_omap_baud_is_mode16) from [c02396b4] 
 (serial_omap_set_termios+0x90/0x8d8)
 [c02396b4] (serial_omap_set_termios) from [c0230a0c] 
 (uart_change_speed+0xa4/0xa8)
 [c0230a0c] (uart_change_speed) from [c0231798] 
 (uart_set_termios+0xa0/0x1fc)
 [c0231798] (uart_set_termios) from [c022bb44] 
 (tty_set_termios+0x248/0x2c0)
 [c022bb44] (tty_set_termios) from [c022c17c] (set_termios+0x248/0x29c)
 [c022c17c] (set_termios) from [c022c3e4] (tty_mode_ioctl+0x1c8/0x4e8)
 [c022c3e4] (tty_mode_ioctl) from [c0227e70] (tty_ioctl+0xa94/0xb18)
 [c0227e70] (tty_ioctl) from [c00cf45c] (do_vfs_ioctl+0x4a0/0x560)
 [c00cf45c] (do_vfs_ioctl) from [c00cf568] (SyS_ioctl+0x4c/0x74)
 [c00cf568] (SyS_ioctl) from [c000e480] (ret_fast_syscall+0x0/0x30)
 
 Signed-off-by: Frans Klaver frans.kla...@xsens.com
 ---
 Resend to add sta...@vger.kernel.org to CC. As far as I know, this applies to
 v3.9 and up.

formletter

This is not the correct way to submit patches for inclusion in the
stable kernel tree.  Please read Documentation/stable_kernel_rules.txt
for how to do this properly.

/formletter

I'll take care of this, but go read that file for your next time...

greg k-h
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH resend 1/2] tty: omap-serial: fix division by zero

2014-09-25 Thread Frans Klaver
On Thu, Sep 25, 2014 at 12:16:28PM +0200, Greg Kroah-Hartman wrote:
 On Thu, Sep 25, 2014 at 11:19:51AM +0200, Frans Klaver wrote:
  If the chosen baud rate is large enough (e.g. 3.5 megabaud), the
  calculated n values in serial_omap_is_baud_mode16() may become 0. This
  causes a division by zero when calculating the difference between
  calculated and desired baud rates. To prevent this, cap the n13 and n16
  values on 1.
  
  Division by zero in kernel.
  [c00132e0] (unwind_backtrace) from [c00112ec] (show_stack+0x10/0x14)
  [c00112ec] (show_stack) from [c01ed7bc] (Ldiv0+0x8/0x10)
  [c01ed7bc] (Ldiv0) from [c023805c] 
  (serial_omap_baud_is_mode16+0x4c/0x68)
  [c023805c] (serial_omap_baud_is_mode16) from [c02396b4] 
  (serial_omap_set_termios+0x90/0x8d8)
  [c02396b4] (serial_omap_set_termios) from [c0230a0c] 
  (uart_change_speed+0xa4/0xa8)
  [c0230a0c] (uart_change_speed) from [c0231798] 
  (uart_set_termios+0xa0/0x1fc)
  [c0231798] (uart_set_termios) from [c022bb44] 
  (tty_set_termios+0x248/0x2c0)
  [c022bb44] (tty_set_termios) from [c022c17c] (set_termios+0x248/0x29c)
  [c022c17c] (set_termios) from [c022c3e4] (tty_mode_ioctl+0x1c8/0x4e8)
  [c022c3e4] (tty_mode_ioctl) from [c0227e70] (tty_ioctl+0xa94/0xb18)
  [c0227e70] (tty_ioctl) from [c00cf45c] (do_vfs_ioctl+0x4a0/0x560)
  [c00cf45c] (do_vfs_ioctl) from [c00cf568] (SyS_ioctl+0x4c/0x74)
  [c00cf568] (SyS_ioctl) from [c000e480] (ret_fast_syscall+0x0/0x30)
  
  Signed-off-by: Frans Klaver frans.kla...@xsens.com
  ---
  Resend to add sta...@vger.kernel.org to CC. As far as I know, this applies 
  to
  v3.9 and up.
 
 formletter
 
 This is not the correct way to submit patches for inclusion in the
 stable kernel tree.  Please read Documentation/stable_kernel_rules.txt
 for how to do this properly.
 
 /formletter
 
 I'll take care of this, but go read that file for your next time...

Ah, right. I'll heed that next time. Thanks for taking care of it.

Frans
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html