diff options
author | joerg <joerg@FreeBSD.org> | 2014-08-08 14:48:26 +0000 |
---|---|---|
committer | joerg <joerg@FreeBSD.org> | 2014-08-08 14:48:26 +0000 |
commit | cbab32ad75d301ca36f59879d25b708ea241d7d9 (patch) | |
tree | fcaf0ee185682964e42d7503ed1a58b87e95d5e8 | |
parent | 3dd442f19d7954750423d7dada24fe8645a3d57e (diff) | |
download | FreeBSD-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.c | 5 |
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); |