From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8371A45199A for ; Wed, 29 Jul 2026 18:37:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785350240; cv=none; b=Nx8QdbXL38Ac9gOEx45nYM8FfPf3G8Rf2RlIeDLL6ojEIBXskpY/m572zbuD9cgacuY/xIVb+cxith8FQe9DBDozHVNRxc5V4xSQYF5yvinnAsWx4E0aTV5zmfias9aV5mbG3BXwHo1hVmbaz/gYVVyDmpkSFJAYuJYGN74Bt6M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785350240; c=relaxed/simple; bh=4P98aSbKBGaFkCj+9Z8F4SQSSnqALgFeDj729JAeHgA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=LMoWSfkjy1NFplCzDLW65il05KtmGExPxtQWoASSSGUZbWa9KC4sdBUw+ctvaL8gO06fwLGYaW+6tmNY8sTlNMlIQd6iCWOA83U09CbqQVm5v2rn6WtJ3Mh1+N5H8wrsHp44RauL3EWtv1GpyeBgDTykco43H8cVovGyUxLss78= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=PwEZ0xkA; arc=none smtp.client-ip=209.85.210.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PwEZ0xkA" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-84830c774a0so1522640b3a.1 for ; Wed, 29 Jul 2026 11:37:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785350239; x=1785955039; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=TKiRLVwj3NSxN3gEZDV7xpth8PKqEmNyRu0ElNGl93A=; b=PwEZ0xkASSYe674ENRaXsVu9D5lUQjcKXrCTNqHJLiHWX4sqo9EZ2/VomqGePiODK6 5fFnbHWBU92MpTOkHoWgikiS+PlNqygQC/yScvv1uYyiWDSMNe5rQbImbvCZvWELQarF ysEgXEwzSIWf3rOYnLphsGkBrRXrxI5nEZZMs3vxX/UnRoBjS+XmocsUF+YhzGxZRyUu unwdwCLKwu2cfqR1GiDMWFuc8g93uB/G8EmVCvJfmpCgFyiI/02h+qico23lixDuPiM3 5zerkbmaXFvr+uzGbTZckwdkE4HJQ73WldgkojKc6gpcFpbu8dm6lOCj+r4ql1UcUpVs 3vJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785350239; x=1785955039; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=TKiRLVwj3NSxN3gEZDV7xpth8PKqEmNyRu0ElNGl93A=; b=p/lZg77tqQdWoojGzTL2JWOondesFSm9FPmwaUE525/k/SqOBahOHhwi7Eo2IXgVIT qDjzzWHsuPhs81Dg+k6UmvPs3L3XXl/LgFlqYHiLByu9tdc96t8i104QsNnq0txnVVZ3 IiGNY+I5I1IHqcI4pXvi6n30KgWGzcNo4zj9E2vXauwo3m0tfF1zPbO29nb41eisrbYx Gv54Ms7HTT8b70glzPSpdz0SfUQ7JPbj1WiL5PHmeo7EAC4GSx4wPo2kd9ynB0fftv3U imUFevOISzmFGelfl+Lj7Lnz/cos6/yf+mMqIYj+viLpigA/SUkA78stG/SS9KePDuza qdUQ== X-Forwarded-Encrypted: i=1; AHgh+RrAWDXwAxzKskrwW82PvGDIjeB9iT7OuRinG8+GHX33y1ZxYl9KII9ceuKXFibR1uopZVz3V88h3FnSga4=@vger.kernel.org X-Gm-Message-State: AOJu0Yybx2mp0sTy29R3daen/oQvuDRsjgVhNEgpIfP/REapSJnMlidV bRdBgovmkNC8x3wTnDRrwOuu11D9TVMhE+zvlKkfVYvMDW2WyzoiISBt X-Gm-Gg: AR+sD13FHAqjNeefu6bF7l5OoR5OXwAoc3/onTgEOJ0eovD4JyWR3rNc1qDX4VSrCqd U0XiRh29aqLj8DW5u4NC/RiFheIVkwYwHenW3c42sHiVHlRMC1qYfZnCGyb4hIBQ8GuAuW2zA6q odAWoARvk1z8zIhjo5xGzcpnHePcc4Bocjkn3jVibbum5U+v7LoxHkID9kSpg0Z8TO4HUFIXEZL jDIxw27hS4zrLamhDq8I6xQ2dvVhtgbJ+Wiqa2akNK+ayuDFlnK5ftJZaNFMWfUMNwqGjFUBBTb RCSkNiujDeltmVQB9RYh2udGZroLhUd/hGDw7dAg1Zbq1hnt3i2KGekVYfqjJNClgRzdnXxosGd 6l4GT6zwDDiHYZxXve5m4BgWTgU9+tKc4+kimperrmauW5aRE6hKwjC8EnxDlySpXDNiO8ndENZ ZV7eoz06l2TZERpnTfAvXQNU4Fh7HfSRsk1/tkWy1NbcM1BGeEthhJMTFS631wy80IDVKl521N5 tavoKY93bPU/xkkcriXLUDZ19gndZeXKXi0isTRfbkSFXLqv+RbzFqJd0R2Ildeq3C0gNKaZTPZ qY1F5U7L7UtuIMKdgyTiEk9WaT8LA0cJs7zxhw== X-Received: by 2002:a05:6a21:7106:b0:3c3:7f8f:88c9 with SMTP id adf61e73a8af0-3c8ba616cf1mr8675488637.54.1785350238739; Wed, 29 Jul 2026 11:37:18 -0700 (PDT) Received: from ryzen.lan ([2601:644:8000:7a86::e35]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-cbdba63d2fesm1312154a12.27.2026.07.29.11.37.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jul 2026 11:37:17 -0700 (PDT) From: Rosen Penev To: linux-wireless@vger.kernel.org Cc: Jeff Chen , Francesco Dolcini , Johannes Berg , Kees Cook , "Gustavo A. R. Silva" , linux-kernel@vger.kernel.org (open list), linux-hardening@vger.kernel.org (open list:KERNEL HARDENING (not covered by other areas):Keyword:\b__counted_by(_le|_be|_ptr)?\b) Subject: [PATCHv2 wireless-next] wifi: nxpwifi: embed rx_reorder_ptr Date: Wed, 29 Jul 2026 11:37:15 -0700 Message-ID: <20260729183715.691287-1-rosenp@gmail.com> X-Mailer: git-send-email 2.55.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit rx_reorder_ptr is a dynamically allocated array which is done near the main struct allocation. Combine the two to avoid freeing separately. Also fix the type to what it actually is. void is normally used to avoid casting but there's no need here. Signed-off-by: Rosen Penev --- v2: fix unused variable error .../net/wireless/nxp/nxpwifi/11n_rxreorder.c | 23 +++++-------------- drivers/net/wireless/nxp/nxpwifi/main.h | 2 +- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/drivers/net/wireless/nxp/nxpwifi/11n_rxreorder.c b/drivers/net/wireless/nxp/nxpwifi/11n_rxreorder.c index c5819f89b08c..65b628411543 100644 --- a/drivers/net/wireless/nxp/nxpwifi/11n_rxreorder.c +++ b/drivers/net/wireless/nxp/nxpwifi/11n_rxreorder.c @@ -171,7 +171,6 @@ nxpwifi_del_rx_reorder_entry(struct nxpwifi_private *priv, list_del_rcu(&tbl->list); spin_unlock_bh(&priv->rx_reorder_tbl_lock[tid]); - kfree(tbl->rx_reorder_ptr); kfree_rcu(tbl, rcu); atomic_set(&priv->adapter->rx_ba_teardown_pending, 0); @@ -262,7 +261,6 @@ static void nxpwifi_11n_create_rx_reorder_tbl(struct nxpwifi_private *priv, u8 *ta, int tid, int win_size, int seq_num) { - int i; struct nxpwifi_rx_reorder_tbl *tbl, *new_node; u16 last_seq = 0; struct nxpwifi_sta_node *node; @@ -273,11 +271,16 @@ nxpwifi_11n_create_rx_reorder_tbl(struct nxpwifi_private *priv, u8 *ta, nxpwifi_11n_dispatch_pkt_until_start_win(priv, tbl, seq_num); return; } + + if (win_size <= 0) + return; + /* if !tbl then create one */ - new_node = kzalloc_obj(*new_node, GFP_KERNEL); + new_node = kzalloc_flex(*new_node, rx_reorder_ptr, win_size); if (!new_node) return; + new_node->win_size = win_size; INIT_LIST_HEAD(&new_node->list); new_node->tid = tid; memcpy(new_node->ta, ta, ETH_ALEN); @@ -311,26 +314,12 @@ nxpwifi_11n_create_rx_reorder_tbl(struct nxpwifi_private *priv, u8 *ta, new_node->flags |= RXREOR_INIT_WINDOW_SHIFT; } - new_node->win_size = win_size; - - new_node->rx_reorder_ptr = kcalloc(win_size, sizeof(void *), - GFP_KERNEL); - if (!new_node->rx_reorder_ptr) { - kfree(new_node); - nxpwifi_dbg(priv->adapter, ERROR, - "%s: failed to alloc reorder_ptr\n", __func__); - return; - } - new_node->timer_context.ptr = new_node; new_node->timer_context.priv = priv; new_node->timer_context.timer_is_set = false; timer_setup(&new_node->timer_context.timer, nxpwifi_flush_data, 0); - for (i = 0; i < win_size; ++i) - new_node->rx_reorder_ptr[i] = NULL; - spin_lock_bh(&priv->rx_reorder_tbl_lock[tid]); list_add_tail_rcu(&new_node->list, &priv->rx_reorder_tbl_ptr[tid]); spin_unlock_bh(&priv->rx_reorder_tbl_lock[tid]); diff --git a/drivers/net/wireless/nxp/nxpwifi/main.h b/drivers/net/wireless/nxp/nxpwifi/main.h index 4abf80771be2..349dfa4d3f85 100644 --- a/drivers/net/wireless/nxp/nxpwifi/main.h +++ b/drivers/net/wireless/nxp/nxpwifi/main.h @@ -656,10 +656,10 @@ struct nxpwifi_rx_reorder_tbl { int init_win; int start_win; int win_size; - void **rx_reorder_ptr; struct reorder_tmr_cnxt timer_context; u8 amsdu; u8 flags; + struct sk_buff *rx_reorder_ptr[] __counted_by(win_size); }; struct nxpwifi_bss_prio_node { -- 2.55.0