svn commit: r295607 - head/sys/dev/usb/wlan

Andriy Voskoboinyk avos at freebsd.org
Sun Feb 14 18:20:47 UTC 2016


Sun, 14 Feb 2016 18:19:02 +0200 було написано Hans Petter Selasky  
<hps at selasky.org>:

> On 02/14/16 16:13, Andriy Voskoboinyk wrote:
>> Sun, 14 Feb 2016 09:16:36 +0200 було написано Hans Petter Selasky
>> <hselasky at freebsd.org>:
>>
>>> Author: hselasky
>>> Date: Sun Feb 14 07:16:36 2016
>>> New Revision: 295607
>>> URL: https://svnweb.freebsd.org/changeset/base/295607
>>>
>>> Log:
>>>   Reduce the number of supported WLAN keys in the rum driver, else we
>>>   risk bit shifting overflows. Found by D5245 / PVS.
>>>  MFC after:    1 week
>>
>> Hardware crypto support was never merged (so, there is nothing to MFC).
>
> OK.
>
>>> Modified: head/sys/dev/usb/wlan/if_rumreg.h
>>> ==============================================================================
>>>
>>> --- head/sys/dev/usb/wlan/if_rumreg.h    Sun Feb 14 02:28:59 2016
>>> (r295606)
>>> +++ head/sys/dev/usb/wlan/if_rumreg.h    Sun Feb 14 07:16:36 2016
>>> (r295607)
>>> @@ -47,7 +47,7 @@
>>>   * H/w encryption/decryption support
>>>   */
>>>  #define KEY_SIZE        (IEEE80211_KEYBUF_SIZE +  
>>> IEEE80211_MICBUF_SIZE)
>>> -#define RT2573_ADDR_MAX         64
>>> +#define RT2573_ADDR_MAX         (32 / RT2573_SKEY_MAX)
>>>  #define RT2573_SKEY_MAX        4
>>> #define RT2573_SKEY(vap, kidx)    (0x1000 + ((vap) * RT2573_SKEY_MAX +  
>>> \
>>>
>>
>> Reason of this change? (device table has 64 entries, not 8).
>> I have not seen any overflows, caused by it:
>
> You're right.
>
>>
>> 1)
>>      vap->iv_key_set = rum_key_set;
>>      vap->iv_key_delete = rum_key_delete;
>>      vap->iv_update_beacon = rum_update_beacon;
>>      vap->iv_max_aid = RT2573_ADDR_MAX;                        // not
>> the case
>>
>>      usb_callout_init_mtx(&rvp->ratectl_ch, &sc->sc_mtx, 0);
>>      TASK_INIT(&rvp->ratectl_task, 0, rum_ratectl_task, rvp);
>>
>> 2)
>>           k < &vap->iv_nw_keys[IEEE80211_WEP_NKID])) {
>>          if (!(k->wk_flags & IEEE80211_KEY_SWCRYPT)) {
>>              RUM_LOCK(sc);
>>              for (i = 0; i < RT2573_ADDR_MAX; i++) {      // can hold
>> [0;63] without any overflows;
>>                                       // keys_bmap is 64-bit, so there
>> is no overflow too
>>                  if ((sc->keys_bmap & (1ULL << i)) == 0) {
>>                      sc->keys_bmap |= 1ULL << i;
>>                      *keyix = i;
>>
>> 3)
>>                  }
>
> I'll revert the header file change shortly. Then we're up to date.
>
> --HPS

Thanks!


More information about the svn-src-all mailing list