From nobody Wed Apr 8 03:06:10 2026 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (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 9925536894D for ; Wed, 11 Mar 2026 00:47:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773190078; cv=none; b=GUyh+dnlgHz93NpMKW76ZZdHKwBA+d6fFFGcQ1kZ0LYRzb090ALttXq38dMloo4UzATzinPONidtzmKen2hCNkEc7IUm2BjgOvRaVUgCi3BU5trxRVKv75keivKczIMthTXRvMut7u7F4LS7ZmL61E/ucXvj5VtWmNtMi7XJKsQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773190078; c=relaxed/simple; bh=GWfHWHTWEkbHmL8A2Gp09obkBBjV5/TvZpLBOriax/w=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=p7altDOYGxAqhc4Tcu9dwP+UWZr6oQjAdeert+evqVU7NDTP28us9GCPJuGGsFVWXCv3hu9I3Y5Yvice08ABdnclWq/r4NxqSZqPtjpLpFp7yZxWizQ8zVEG31qyAvUJ2LTRG8Gbj1g5swbaWy1T4YgvQPBqT56HE5SaIGKOPWA= 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=MkOlvtzz; arc=none smtp.client-ip=209.85.216.52 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="MkOlvtzz" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-358ed696623so5665468a91.0 for ; Tue, 10 Mar 2026 17:47:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773190075; x=1773794875; 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; bh=O664dCsdWRRkRc+ofehgmpux+USEDU3vAot0X1wBxCI=; b=MkOlvtzzcoTpwf+ItKIB/2Y058rm/pZhOR2QTeeIt69Xesn97FOj66T3+NYKFZITJ7 XLo05pYknDTr/WWj2r6ceuJs9YS385+HUaM8+mruWgroVkRtwK0wzk8uw+hv3pK7akMp Z7IIO6PXHEggl5u2mqprFEk8dtAyegMqrw8pkAReIHupTB1+kQ/PFdfIq49iyBrDyiyv dYlvftUxyhS/B1te8Bjqf5WEJ7pJrD8NLYXARidapcx65Wca1pE/XMapbXQaWdRHVo/E Hofh4KGWQyTxQWn9liRC65fGFkhh5+SBlASCF3jcEHqlm+WT0EyKs3bWkFQWu4Sm9iCV CeZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773190075; x=1773794875; 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; bh=O664dCsdWRRkRc+ofehgmpux+USEDU3vAot0X1wBxCI=; b=VPgD7x5rB53Hf9K5P2pNLNXKHA3fjmi041DH9IAp5ICQJhc6e41KlA2yW+xU57EFYo eSyK1/B+7Tgd8CNwkxsFXt1RpU5lzZ6dyHETcOkB8RXPs4kQnjRJvOV0zOdzdDljr218 FREBBnKk+uJoth8l0ViKf+TtsXtmE+TC3QPrRdvomMPD9dR/2pxq4vko4AKYoqKcbp2D nO/vwKFgGEL9imCrF+xjfx0MYOpM9uRFf2a08NWEmO/HfcAJ9YBXod9gRMLN70mqfOeM 6ERHt6MHV4QiYefGmf6dGL+5ZWxxmPQKgJNsSarq1rxKg2K1KbCqR8Bf+sLvzR5PWm2Q m5wg== X-Forwarded-Encrypted: i=1; AJvYcCWaztuDp4lVtGS9zg2mwfMjL9B0IC4Q+6hrw54oLyAg1cpdqtoyoeYoER8W2PkGlbR46UuM95qDwM/9+0k=@vger.kernel.org X-Gm-Message-State: AOJu0YzONox4o7/MN3qOzi+WOqfKs77mhnJlj7iy928KpE4MPfzDgjio q9zJtBovwZU5VOrMSgaGfeHbxocgTDgYpY72+fVvIwxGu66GJQARNgVz X-Gm-Gg: ATEYQzzLJl3bNYPYVQngj7GDENsL9gM/yfN47gwwHeta9xzaH7mkcwPb5DFdsc4cocL RI7KzjE7FN731VmF+W0Xoc365/olMTsnDBlF187YDQt8n5dH50Li7eSTRN4ARTRScYJhC0ZGf+N GcehDLYZVuWRWgAzvYlsk2RckQcWvIhXOObN67F/Ib6xEwyAHp46gW0rG+wKkRr2z7Ub8DTtb0f wY/He9Kf+1X7tmB0/adYMJ+mWNdFFMmTse2JL6TswCG3IrBN64m3d5FXMZpTuADuLPDn5nkpHnm YADNbwRQHOtzXQWzLv7N1i7YM2Nx5XyIvlZUdY2676Wy4UzEdVYv0JPZwpl4C5n58gFxftNjXs5 gJni7EqU1tLX4Wt+bRu4RJfho56Fpf0QCG75wFg7/U+ZSkQSMosnpvxINlbALxK3g9xjzAbXeDE gKX1TYPWTBKmWqefHYF3TGAjR8/nJGsemPBpWnsnaD2eWHxrqus7c1aQ== X-Received: by 2002:a17:90b:3dcd:b0:340:25f0:a9b with SMTP id 98e67ed59e1d1-35a019e88camr707120a91.33.1773190074956; Tue, 10 Mar 2026 17:47:54 -0700 (PDT) Received: from ryzen ([2601:644:8000:56f5::8bd]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c73cde37ffesm373842a12.0.2026.03.10.17.47.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 17:47:54 -0700 (PDT) From: Rosen Penev To: linux-wireless@vger.kernel.org Cc: Kees Cook , "Gustavo A. R. Silva" , b43-dev@lists.infradead.org (open list:B43 WIRELESS DRIVER), 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)?\b) Subject: [PATCH] wifi: b43: kzalloc + kcalloc to kzalloc_flex Date: Tue, 10 Mar 2026 17:47:36 -0700 Message-ID: <20260311004736.32730-1-rosenp@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Simplifies allocation and allows using __counted_by for extra runtime analysis. Signed-off-by: Rosen Penev --- drivers/net/wireless/broadcom/b43/dma.c | 18 ++++++++---------- drivers/net/wireless/broadcom/b43/dma.h | 4 ++-- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/drivers/net/wireless/broadcom/b43/dma.c b/drivers/net/wireless= /broadcom/b43/dma.c index 3a8df7a18042..05da6987a845 100644 --- a/drivers/net/wireless/broadcom/b43/dma.c +++ b/drivers/net/wireless/broadcom/b43/dma.c @@ -837,18 +837,19 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wlde= v *dev, struct b43_dmaring *ring; int i, err; dma_addr_t dma_test; + size_t nr_slots; =20 - ring =3D kzalloc_obj(*ring); + if (for_tx) + nr_slots =3D B43_TXRING_SLOTS; + else + nr_slots =3D B43_RXRING_SLOTS; + + ring =3D kzalloc_flex(*ring, meta, nr_slots); if (!ring) goto out; =20 - ring->nr_slots =3D B43_RXRING_SLOTS; - if (for_tx) - ring->nr_slots =3D B43_TXRING_SLOTS; + ring->nr_slots =3D nr_slots; =20 - ring->meta =3D kzalloc_objs(struct b43_dmadesc_meta, ring->nr_slots); - if (!ring->meta) - goto err_kfree_ring; for (i =3D 0; i < ring->nr_slots; i++) ring->meta->skb =3D B43_DMA_PTR_POISON; =20 @@ -943,8 +944,6 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev = *dev, err_kfree_txhdr_cache: kfree(ring->txhdr_cache); err_kfree_meta: - kfree(ring->meta); - err_kfree_ring: kfree(ring); ring =3D NULL; goto out; @@ -1004,7 +1003,6 @@ static void b43_destroy_dmaring(struct b43_dmaring *r= ing, free_ringmemory(ring); =20 kfree(ring->txhdr_cache); - kfree(ring->meta); kfree(ring); } =20 diff --git a/drivers/net/wireless/broadcom/b43/dma.h b/drivers/net/wireless= /broadcom/b43/dma.h index c2a357219d4b..f9f65bbe2d76 100644 --- a/drivers/net/wireless/broadcom/b43/dma.h +++ b/drivers/net/wireless/broadcom/b43/dma.h @@ -228,8 +228,6 @@ struct b43_dmaring { const struct b43_dma_ops *ops; /* Kernel virtual base address of the ring memory. */ void *descbase; - /* Meta data about all descriptors. */ - struct b43_dmadesc_meta *meta; /* Cache of TX headers for each TX frame. * This is to avoid an allocation on each TX. * This is NULL for an RX ring. @@ -273,6 +271,8 @@ struct b43_dmaring { /* Statistics: Total number of TX plus all retries. */ u64 nr_total_packet_tries; #endif /* CONFIG_B43_DEBUG */ + /* Meta data about all descriptors. */ + struct b43_dmadesc_meta meta[] __counted_by(nr_slots); }; =20 static inline u32 b43_dma_read(struct b43_dmaring *ring, u16 offset) --=20 2.53.0