Search Linux Wireless

Re: [PATCH] wifi: iwlwifi: fix double free on tx path.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/12/22 7:17 AM, Greenman, Gregory wrote:

         if (WARN_ON_ONCE(!mvmsta))
                 return -1;
@@ -1238,8 +1239,17 @@ int iwl_mvm_tx_skb_sta(struct iwl_mvm *mvm, struct sk_buff *skb,
                ret = iwl_mvm_tx_mpdu(mvm, skb, &info, sta);
                 if (ret) {

Maybe while on it, add here "if (unlikely(ret)) {"?

I don't think it is worth respinning the patch for that, but could add a follow-on patch.

Thanks,
Ben


+                       /* Free skbs created as part of TSO logic that have not yet been dequeued */
                         __skb_queue_purge(&mpdus_skbs);
-                       return ret;
+                       /* skb here is not necessarily same as skb that entered this method,
+                        * so free it explicitly.
+                        */
+                       if (skb == orig_skb)
+                               ieee80211_free_txskb(mvm->hw, skb);
+                       else
+                               kfree_skb(skb);
+                       /* there was error, but we consumed skb one way or another, so return 0 */
+                       return 0;
                 }
         }

Thanks for the fix!
Gregory



--
Ben Greear <greearb@xxxxxxxxxxxxxxx>
Candela Technologies Inc  http://www.candelatech.com




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux