summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjoerg <joerg@FreeBSD.org>2014-08-08 14:48:26 +0000
committerjoerg <joerg@FreeBSD.org>2014-08-08 14:48:26 +0000
commitcbab32ad75d301ca36f59879d25b708ea241d7d9 (patch)
treefcaf0ee185682964e42d7503ed1a58b87e95d5e8
parent3dd442f19d7954750423d7dada24fe8645a3d57e (diff)
downloadFreeBSD-src-cbab32ad75d301ca36f59879d25b708ea241d7d9.zip
FreeBSD-src-cbab32ad75d301ca36f59879d25b708ea241d7d9.tar.gz
Merge r269470:
Avoid a divide-by-zero panic when setting the baudrate to 0.
-rw-r--r--sys/dev/usb/serial/umcs.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/usb/serial/umcs.c b/sys/dev/usb/serial/umcs.c
index c8f8ab8..b7174fb 100644
--- a/sys/dev/usb/serial/umcs.c
+++ b/sys/dev/usb/serial/umcs.c
@@ -1083,7 +1083,10 @@ umcs7840_calc_baudrate(uint32_t rate, uint16_t *divisor, uint8_t *clk)
for (i = 0; i < umcs7840_baudrate_divisors_len - 1 &&
!(rate > umcs7840_baudrate_divisors[i] && rate <= umcs7840_baudrate_divisors[i + 1]); ++i);
- *divisor = umcs7840_baudrate_divisors[i + 1] / rate;
+ if (rate == 0)
+ *divisor = 1; /* XXX */
+ else
+ *divisor = umcs7840_baudrate_divisors[i + 1] / rate;
/* 0x00 .. 0x70 */
*clk = i << MCS7840_DEV_SPx_CLOCK_SHIFT;
return (0);
OpenPOWER on IntegriCloud