wifi: mac80211: use kvcalloc() for codel vars
authorJohannes Berg <johannes.berg@intel.com>
Mon, 25 Mar 2024 14:05:03 +0000 (15:05 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 25 Mar 2024 14:40:03 +0000 (15:40 +0100)
This is a big array, but it's only used by software and
need not be contiguous in memory. Use kvcalloc() since
it's so big (order 5 allocation).

Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240325150509.9195643699e4.I1b94b17abc809491080d6312f31ce6b5decdd446@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/tx.c

index 6bf223e6cd1a54aa432ef0bd41da48cd9316ffc5..ac5ae7c05e364736662e3e4a0c449ba981c981a1 100644 (file)
@@ -1604,8 +1604,8 @@ int ieee80211_txq_setup_flows(struct ieee80211_local *local)
        local->cparams.target = MS2TIME(20);
        local->cparams.ecn = true;
 
-       local->cvars = kcalloc(fq->flows_cnt, sizeof(local->cvars[0]),
-                              GFP_KERNEL);
+       local->cvars = kvcalloc(fq->flows_cnt, sizeof(local->cvars[0]),
+                               GFP_KERNEL);
        if (!local->cvars) {
                spin_lock_bh(&fq->lock);
                fq_reset(fq, fq_skb_free_func);
@@ -1625,7 +1625,7 @@ void ieee80211_txq_teardown_flows(struct ieee80211_local *local)
 {
        struct fq *fq = &local->fq;
 
-       kfree(local->cvars);
+       kvfree(local->cvars);
        local->cvars = NULL;
 
        spin_lock_bh(&fq->lock);