diff options
author | hselasky <hselasky@FreeBSD.org> | 2014-01-31 22:42:26 +0000 |
---|---|---|
committer | hselasky <hselasky@FreeBSD.org> | 2014-01-31 22:42:26 +0000 |
commit | f6bc13e38a04d44e80b04397316b246987e08d40 (patch) | |
tree | 25e758604f5db0de21c3317ad0abb4aad4cf4645 /sys/dev/usb/wlan/if_run.c | |
parent | 64b15ec174b0b7a8dd798f25c0299df5c577d2fa (diff) | |
download | FreeBSD-src-f6bc13e38a04d44e80b04397316b246987e08d40.zip FreeBSD-src-f6bc13e38a04d44e80b04397316b246987e08d40.tar.gz |
Fix a range check for maximum transmit length. The existing code was
off by 4 bytes in one case.
Approved by: kevlo @
MFC after: 2 weeks
Diffstat (limited to 'sys/dev/usb/wlan/if_run.c')
-rw-r--r-- | sys/dev/usb/wlan/if_run.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/sys/dev/usb/wlan/if_run.c b/sys/dev/usb/wlan/if_run.c index 1256342..69a525c 100644 --- a/sys/dev/usb/wlan/if_run.c +++ b/sys/dev/usb/wlan/if_run.c @@ -3070,10 +3070,10 @@ tr_setup: STAILQ_REMOVE_HEAD(&pq->tx_qh, next); m = data->m; - size = (sc->mac_ver == 0x5592) ? - RUN_MAX_TXSZ + sizeof(uint32_t) : RUN_MAX_TXSZ; + size = (sc->mac_ver == 0x5592) ? + sizeof(data->desc) + sizeof(uint32_t) : sizeof(data->desc); if ((m->m_pkthdr.len + - sizeof(data->desc) + 3 + 8) > size) { + size + 3 + 8) > RUN_MAX_TXSZ) { DPRINTF("data overflow, %u bytes\n", m->m_pkthdr.len); @@ -3085,8 +3085,6 @@ tr_setup: } pc = usbd_xfer_get_frame(xfer, 0); - size = (sc->mac_ver == 0x5592) ? - sizeof(data->desc) + sizeof(uint32_t) : sizeof(data->desc); usbd_copy_in(pc, 0, &data->desc, size); usbd_m_copy_in(pc, size, m, 0, m->m_pkthdr.len); size += m->m_pkthdr.len; |