* [PATCH wireless-next] wifi: brcmfmac: flowring: simplify flow allocation
@ 2026-06-08 5:11 Rosen Penev
2026-06-09 14:48 ` Arend van Spriel
0 siblings, 1 reply; 2+ messages in thread
From: Rosen Penev @ 2026-06-08 5:11 UTC (permalink / raw)
To: linux-wireless
Cc: Arend van Spriel, Kees Cook, Gustavo A. R. Silva,
open list:BROADCOM BRCM80211 IEEE802.11 WIRELESS DRIVERS,
open list:BROADCOM BRCM80211 IEEE802.11 WIRELESS DRIVERS,
open list,
open list:KERNEL HARDENING (not covered by other areas):Keyword:b__counted_by(_le|_be|_ptr)?b
Use a flexible array member and kzalloc_flex to combine allocations.
Simplifies code slightly.
Add __counted_by for extra runtime analysis.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
.../wireless/broadcom/brcm80211/brcmfmac/flowring.c | 10 ++--------
.../wireless/broadcom/brcm80211/brcmfmac/flowring.h | 2 +-
2 files changed, 3 insertions(+), 9 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
index df7e3bee19f2..35cbcea0abc9 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c
@@ -360,20 +360,15 @@ struct brcmf_flowring *brcmf_flowring_attach(struct device *dev, u16 nrofrings)
struct brcmf_flowring *flow;
u32 i;
- flow = kzalloc_obj(*flow);
+ flow = kzalloc_flex(*flow, rings, nrofrings);
if (flow) {
- flow->dev = dev;
flow->nrofrings = nrofrings;
+ flow->dev = dev;
spin_lock_init(&flow->block_lock);
for (i = 0; i < ARRAY_SIZE(flow->addr_mode); i++)
flow->addr_mode[i] = ADDR_INDIRECT;
for (i = 0; i < ARRAY_SIZE(flow->hash); i++)
flow->hash[i].ifidx = BRCMF_FLOWRING_INVALID_IFIDX;
- flow->rings = kzalloc_objs(*flow->rings, nrofrings);
- if (!flow->rings) {
- kfree(flow);
- flow = NULL;
- }
}
return flow;
@@ -399,7 +394,6 @@ void brcmf_flowring_detach(struct brcmf_flowring *flow)
search = search->next;
kfree(remove);
}
- kfree(flow->rings);
kfree(flow);
}
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
index 818882b0fd01..f3d511f9a3c9 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h
@@ -38,12 +38,12 @@ struct brcmf_flowring_tdls_entry {
struct brcmf_flowring {
struct device *dev;
struct brcmf_flowring_hash hash[BRCMF_FLOWRING_HASHSIZE];
- struct brcmf_flowring_ring **rings;
spinlock_t block_lock;
enum proto_addr_mode addr_mode[BRCMF_MAX_IFS];
u16 nrofrings;
bool tdls_active;
struct brcmf_flowring_tdls_entry *tdls_entry;
+ struct brcmf_flowring_ring *rings[] __counted_by(nrofrings);
};
--
2.54.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-09 14:48 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-08 5:11 [PATCH wireless-next] wifi: brcmfmac: flowring: simplify flow allocation Rosen Penev
2026-06-09 14:48 ` Arend van Spriel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox