From: Xuanqiang Luo <xuanqiang.luo@linux.dev>
To: linux-wpan@vger.kernel.org
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
alex.aring@gmail.com, stefan@datenfreihafen.org,
miquel.raynal@bootlin.com, david.girault@qorvo.com,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, horms@kernel.org, stable@vger.kernel.org,
Xuanqiang Luo <luoxuanqiang@kylinos.cn>
Subject: [PATCH net v1] mac802154: avoid extra skb references in RX queues
Date: Sat, 5 Sep 2026 14:15:23 +0800 [thread overview]
Message-ID: <20260905061524.91223-1-xuanqiang.luo@linux.dev> (raw)
From: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
__ieee802154_rx_handle_packet() passes each cloned skb to
ieee802154_subif_frame() and does not release it after the call. The
callee consumes the skb on every path: it either frees it, hands it to
the networking stack, or stores it in a queued RX descriptor.
The beacon and MAC command paths nevertheless call skb_get() before
storing the skb. The worker drops only that additional reference, leaving
the original clone reference without an owner and leaking every queued
skb.
kmemleak report:
unreferenced object 0xffff0000c1fcd480 (size 232):
comm "softirq", pid 0, jiffies 4295683396
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 60 fd d4 00 00 ff ff 00 00 00 00 00 00 00 00 .`..............
backtrace (crc ee03f6a1):
kmemleak_alloc+0xcc/0xf8
kmem_cache_alloc_noprof+0x240/0x418
skb_clone+0x60/0xe0
ieee802154_rx+0x19c/0x280 [mac802154]
ieee802154_tasklet_handler+0xa8/0xb8 [mac802154]
tasklet_action_common+0x148/0x528
tasklet_action+0x38/0x50
handle_softirqs+0x10c/0x450
__do_softirq+0x1c/0x28
Transfer the existing skb reference to the descriptor instead of taking
another one.
Fixes: 57588c71177f ("mac802154: Handle passive scanning")
Fixes: d021d218f6d9 ("mac802154: Handle received BEACON_REQ")
Cc: stable@vger.kernel.org
Signed-off-by: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
---
net/mac802154/rx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/mac802154/rx.c b/net/mac802154/rx.c
index 19b5382e85a84..ad602d222e861 100644
--- a/net/mac802154/rx.c
+++ b/net/mac802154/rx.c
@@ -287,7 +287,7 @@ ieee802154_subif_frame(struct ieee802154_sub_if_data *sdata,
if (!mac_pkt)
goto fail;
- mac_pkt->skb = skb_get(skb);
+ mac_pkt->skb = skb;
mac_pkt->sdata = sdata;
mac_pkt->page = sdata->local->scan_page;
mac_pkt->channel = sdata->local->scan_channel;
@@ -304,7 +304,7 @@ ieee802154_subif_frame(struct ieee802154_sub_if_data *sdata,
if (!mac_pkt)
goto fail;
- mac_pkt->skb = skb_get(skb);
+ mac_pkt->skb = skb;
mac_pkt->sdata = sdata;
netdev_hold(sdata->dev, &mac_pkt->dev_tracker, GFP_ATOMIC);
spin_lock(&sdata->local->rx_lock);
--
2.43.0
next reply other threads:[~2026-09-05 6:16 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-05 6:15 Xuanqiang Luo [this message]
2026-09-07 6:30 ` [PATCH net v1] mac802154: avoid extra skb references in RX queues Miquel Raynal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260905061524.91223-1-xuanqiang.luo@linux.dev \
--to=xuanqiang.luo@linux.dev \
--cc=alex.aring@gmail.com \
--cc=davem@davemloft.net \
--cc=david.girault@qorvo.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wpan@vger.kernel.org \
--cc=luoxuanqiang@kylinos.cn \
--cc=miquel.raynal@bootlin.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=stable@vger.kernel.org \
--cc=stefan@datenfreihafen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.