lkml.org 
[lkml]   [2009]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: divide by zero in termios when setting bluetooth
    Hi!

    > > I triggered this by mistake... "W" taint is from the WARN_ON()
    > > before.
    >
    > This ought to fix it
    >
    > serial: Fix crash if the minimum rate of the device is > 9600 baud
    >
    > From: Alan Cox <alan@linux.intel.com>
    >
    > In that situation if the old rate is invalid and the new rate is invalid
    > and the chip cannot do 9600 baud we report zero, which makes all the
    > drivers explode.
    >
    > Instead force the rate based on min/max
    >
    > Signed-off-by: Alan Cox <alan@linux.intel.com>

    > }
    >
    > /*
    > - * As a last resort, if the quotient is zero,
    > - * default to 9600 bps
    > + * As a last resort, if the range cannot be met then clip to
    > + * the nearest chip supported rate.
    > */
    > - if (!hung_up)
    > - tty_termios_encode_baud_rate(termios, 9600, 9600);
    > + if (!hung_up) {
    > + if (baud <= min)
    > + tty_termios_encode_baud_rate(termios,
    > + min + 1, min + 1);
    > + else
    > + tty_termios_encode_baud_rate(termios,
    > + max - 1, max - 1);
    > + }
    > }
    > -
    > + /* Should never happen */
    > + WARN_ON(1);
    > return 0;

    Does this mean WARN_ON() on user error? Maybe printk(KERN_ERR) with
    explanation would be better?
    Pavel
    --
    (english) http://www.livejournal.com/~pavelmachek
    (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html


    \
     
     \ /
      Last update: 2009-12-01 17:05    [W:0.023 / U:1.156 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site