Re: [PATCH] Winchiphead 340/1: full baud rate and status/control line support

From: Tollef Fog Heen
Date: Sun Jan 04 2009 - 16:16:16 EST


]] Alan Cox

| > + if (factor > 0xfff0) { /* Clamp */
| > + factor = 0xfff0;
| > + divisor = 0;
| > + }
| > +
| > + t1 = factor;
| > + for (t2 = divisor; t2 <= CH341_BAUDBASE_DIVMAX; t2++)
| > + t1 >>= 3;
| > + baud = CH341_BAUDBASE_FACTOR / t1;
| > +
|
| Same question as before: Can baud really become zero at this point ? Also
| for that matter what guarantees that t1 cannot become zero in this
| computation ?

Nothing, that code is completely wrong. I've rewritten it now. Thanks
for explaining.

| > + if (baud && tty)
| > + tty_encode_baud_rate(tty, baud, baud);
|
| The check for B0 (hangup) was done earlier (see set_termios). So if you
| can end up with a requested baud rate being turned into 0 you need to
| bump it up to 1. If not you don't need the test.

Indeed, fixed as well. New patch incoming in a few minutes.

I've also added the mutex protecting set_handshake, but I feel less
confident about whether that's the right approach, so feedback there is
also appreciated.

--
Tollef Fog Heen
UNIX is user friendly, it's just picky about who its friends are

--
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/