1. 27 Jul, 2022 2 commits
    • Jose Ignacio Tornos Martinez's avatar
      wifi: iwlwifi: mvm: fix double list_add at iwl_mvm_mac_wake_tx_queue · 14a3aacf
      Jose Ignacio Tornos Martinez authored
      After successfull station association, if station queues are disabled for
      some reason, the related lists are not emptied. So if some new element is
      added to the list in iwl_mvm_mac_wake_tx_queue, it can match with the old
      one and produce a BUG like this:
      
      [   46.535263] list_add corruption. prev->next should be next (ffff94c1c318a360), but was 0000000000000000. (prev=ffff94c1d02d3388).
      [   46.535283] ------------[ cut here ]------------
      [   46.535284] kernel BUG at lib/list_debug.c:26!
      [   46.535290] invalid opcode: 0000 [#1] PREEMPT SMP PTI
      [   46.585304] CPU: 0 PID: 623 Comm: wpa_supplicant Not tainted 5.19.0-rc3+ #1
      [   46.592380] Hardware name: Dell Inc. Inspiron 660s/0478VN       , BIOS A07 08/24/2012
      [   46.600336] RIP: 0010:__list_add_valid.cold+0x3d/0x3f
      [   46.605475] Code: f2 4c 89 c1 48 89 fe 48 c7 c7 c8 40 67 93 e8 20 cc fd ff 0f 0b 48 89 d1 4c 89 c6 4c 89 ca 48 c7 c7 70 40 67 93 e8 09 cc fd ff <0f> 0b 48 89 fe 48 c7 c7 00 41 67 93 e8 f8 cb fd ff 0f 0b 48 89 d1
      [   46.624469] RSP: 0018:ffffb20800ab76d8 EFLAGS: 00010286
      [   46.629854] RAX: 0000000000000075 RBX: ffff94c1c318a0e0 RCX: 0000000000000000
      [   46.637105] RDX: 0000000000000201 RSI: ffffffff9365e100 RDI: 00000000ffffffff
      [   46.644356] RBP: ffff94c1c5f43370 R08: 0000000000000075 R09: 3064316334396666
      [   46.651607] R10: 3364323064316334 R11: 39666666663d7665 R12: ffff94c1c5f43388
      [   46.658857] R13: ffff94c1d02d3388 R14: ffff94c1c318a360 R15: ffff94c1cf2289c0
      [   46.666108] FS:  00007f65634ff7c0(0000) GS:ffff94c1da200000(0000) knlGS:0000000000000000
      [   46.674331] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   46.680170] CR2: 00007f7dfe984460 CR3: 000000010e894003 CR4: 00000000000606f0
      [   46.687422] Call Trace:
      [   46.689906]  <TASK>
      [   46.691950]  iwl_mvm_mac_wake_tx_queue+0xec/0x15c [iwlmvm]
      [   46.697601]  ieee80211_queue_skb+0x4b3/0x720 [mac80211]
      [   46.702973]  ? sta_info_get+0x46/0x60 [mac80211]
      [   46.707703]  ieee80211_tx+0xad/0x110 [mac80211]
      [   46.712355]  __ieee80211_tx_skb_tid_band+0x71/0x90 [mac80211]
      ...
      
      In order to avoid this problem, we must also remove the related lists when
      station queues are disabled.
      
      Fixes: cfbc6c4c ("iwlwifi: mvm: support mac80211 TXQs model")
      Reported-by: default avatarTakayuki Nagata <tnagata@redhat.com>
      Reported-by: default avatarPetr Stourac <pstourac@redhat.com>
      Tested-by: default avatarPetr Stourac <pstourac@redhat.com>
      Signed-off-by: default avatarJose Ignacio Tornos Martinez <jtornosm@redhat.com>
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/20220719153542.81466-1-jtornosm@redhat.com
      14a3aacf
    • Justin Stitt's avatar
      wifi: iwlwifi: mvm: fix clang -Wformat warnings · 7819b3d1
      Justin Stitt authored
      When building with Clang we encounter these warnings:
      | drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c:1108:47: error:
      | format specifies type 'unsigned char' but the argument has type 's16'
      | (aka 'short') [-Werror,-Wformat] IWL_DEBUG_INFO(mvm, "\tburst index:
      | %hhu\n", res->ftm.burst_index);
      -
      | drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c:1111:47: error:
      | format specifies type 'unsigned char' but the argument has type 's32'
      | (aka 'int') [-Werror,-Wformat] IWL_DEBUG_INFO(mvm, "\trssi spread:
      | %hhu\n", res->ftm.rssi_spread);
      
      The previous format specifier `%hhu` describes a u8 but our arguments
      are wider than this which means bits are potentially being lost.
      
      Variadic functions (printf-like) undergo default argument promotion.
      Documentation/core-api/printk-formats.rst specifically recommends using
      the promoted-to-type's format flag.
      
      As per C11 6.3.1.1:
      (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf) `If an int
      can represent all values of the original type ..., the value is
      converted to an int; otherwise, it is converted to an unsigned int.
      These are called the integer promotions.` Thus it makes sense to change
      `%hhu` to `%d` for both instances of the warning.
      
      Link: https://github.com/ClangBuiltLinux/linux/issues/378Signed-off-by: default avatarJustin Stitt <justinstitt@google.com>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Signed-off-by: default avatarKalle Valo <kvalo@kernel.org>
      Link: https://lore.kernel.org/r/20220711222919.2043613-1-justinstitt@google.com
      7819b3d1
  2. 26 Jul, 2022 9 commits
  3. 25 Jul, 2022 29 commits