From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (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 6CCBC1E492D for ; Mon, 27 Jul 2026 00:29:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785112160; cv=none; b=sl1T9v9pwrSlk11jTp2/O5ch3C+QBHIv/VCf3QWwSjrqis2JBuvpUvAVirq+DMMnR7j/arWifYVdUlH+mLNadQzuqqi8nj5AHUUhodJp6Pm2REflbEkajdm/xvkt3kCRia5EbFAf4kWtdlxnUVUAg0WNQXnRZ5HTcsmUB4ILi4k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785112160; c=relaxed/simple; bh=8QXnkeE8oX0SGRQfzCAWUoTMRzu3W0XnVIT46kceEEU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=m2feC12O1F4WmhJqlhTaUYLScZkazKpkknbsSmoHeI12FU99cYfFIsQyCiDm2KCwh9q0CVjz+AGxJnssSKrqAAdYKhr7Xd2m0bsiKgUlHlhPd6oDA6ZYcSYdcSwuQXpQRJwQQ1IojE0peM8JOc26CooAoPU8RLIMSMrY8vEIS8w= 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=FL9OWcnZ; arc=none smtp.client-ip=209.85.214.175 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="FL9OWcnZ" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2cedda2ce6fso17825735ad.1 for ; Sun, 26 Jul 2026 17:29:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785112159; x=1785716959; 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=HGg+8z1r0Tll2j8ZTquwQJTj91H/jfRoN35vbaME2+c=; b=FL9OWcnZmTU8LEnRZhBWLAEPoeBzeNN1/YRxv/4CEdRHQoAq8UG7arrpB6x2DZx151 S53Paiaglnk/KC2T79LF9ljndcLb8jXz/5+dIy94gx6aJ9gmcGlY0p1KI7HYIpiYyqhg tN99j9NgLwN/pPeTXMpupMOSCACcKejZBiZ8HqrDk1nH3c0gyFMdecB8d+MLAw1zq81j 3saTHNjYRD0JZXH7S4WaAZb86vwnyalTnNkyOcBfcRvLwWn6179oq5LyLwP4PGrsvQPX pyFLESfXVyGWCRIcM+ckCHR0clxuoppCUBfvB52cuAw5/VKJldTQVyfyq6BGRu/g82Zt Hf0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785112159; x=1785716959; 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=HGg+8z1r0Tll2j8ZTquwQJTj91H/jfRoN35vbaME2+c=; b=YyV0+xyZdaIGhC3QJx7JOzD6Njp4yBSQ70WYRzew3jBhj6ps0mPd6DaWLOA/lJh+BI 0Dc4L7H7VmjluKFesB44FALUROLEEeJWZ1v6mLdwiqCjeFP2y7IHCdMYxieB6JeD7wNA XZVkhbYBny1UiScGDHdWVrtp16uI3oSM1Z1YMsMeSyzsJpriR2h+D0gtdWihhYvPkreL vS2883hAlRjxfThLn26Y+cLoBQv4Gpv38K52k8kroBdmO58A7zp34abzBuJU3GQd6pCC 02yJtsMHeaaYOr2Tq2cHy6Z3sRybEp6P1XKi2H+5/jLE5793Ix1F31xAVwSwwAcH2Hg9 eUeA== X-Forwarded-Encrypted: i=1; AHgh+RooLl20maWxuF9iCOQCOtjXEAou3oTk1auxXNLthel0kpCKIZfDGUvwgeSGX2v8JL08YT5AT6xT4EKjGGE=@vger.kernel.org X-Gm-Message-State: AOJu0YxFg6QK/KUlhR5Ab4r6iHDlvrVIKtqjWoRHs/vb1hi1jHw4EB+r 0GfNNNpDIV8V6FmtyeTgupaW++j8oCaF9XzeOjJRCzWlLv5NjHklYdrC X-Gm-Gg: AR+sD102d2+DKYwBOcDguXpPyXm88YYJLM3SnFWxRlvUWTcvmZBISwvHRpTR40nEDic uMJ/NHpPodUcYjqHX625fDcR2x0kJyL2WE5/LDm1gf36bOfniotfp2/3agG15f+mv5m/7acrnXo qS0AnsjeiKhGOVJ0UtjE5sOpoMGMNIJFIJmTxWqoM/zPnUSQ9iS6IBYo4o02HtIwvC90yifmbwD t/BgcYAhJH8aIUM3speRdjo+cM2723dbeZUykYIUnv0YUh+zfJGbiTes4/CQdqcEnrhin0/WLB3 VY4jiI64yzND4WIUVDFrErA3GblwyjdNizhZLGpCQHOIAj60n23Se809eWfYQSbszWGegyTkOJF 7Osy8JM4NELAYzaEHzZ2/S5aawQQroen8sxfC+NQzrMW072GckmArtm5BKPPRS99XKXgNj+Ljlm yL6kzIgLw9NWxsFPQUM4IQlRPrk8oGduI6yphhmDV8nR4Kv4crvooqOL0DjIzT2BM8avQIvv0w/ wweGy/WGbYpTJozAUgNssNkJ8BhlyObBGU7cqsJlVfa77EMGI2M88E= X-Received: by 2002:a17:903:124f:b0:2cf:477f:57cc with SMTP id d9443c01a7336-2cfde687d8fmr59514225ad.4.1785112158717; Sun, 26 Jul 2026 17:29:18 -0700 (PDT) Received: from ryzen.lan ([2601:644:8000:7a86::e35]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cfde7da81bsm24839795ad.60.2026.07.26.17.29.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Jul 2026 17:29: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: [PATCH wireless-next] wifi: nxpwifi: embed rx_reorder_ptr Date: Sun, 26 Jul 2026 17:29:16 -0700 Message-ID: <20260727002916.117754-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 --- .../net/wireless/nxp/nxpwifi/11n_rxreorder.c | 19 +++---------------- drivers/net/wireless/nxp/nxpwifi/main.h | 2 +- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/drivers/net/wireless/nxp/nxpwifi/11n_rxreorder.c b/drivers/net/wireless/nxp/nxpwifi/11n_rxreorder.c index c5819f89b08c..b2fd624497a3 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); @@ -273,11 +272,13 @@ 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 !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 +312,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