* [syzbot] [wpan?] general protection fault in ieee802154_llsec_dump_table (2)
@ 2026-10-30 12:14 syzbot
2026-11-01 8:37 ` Forwarded: [PATCH] ieee802154: nl-mac: validate device pointers before dereference syzbot
0 siblings, 1 reply; 2+ messages in thread
From: syzbot @ 2026-10-30 12:14 UTC (permalink / raw)
To: alex.aring, linux-kernel, linux-wpan, miquel.raynal, netdev,
stefan, syzkaller-bugs
Hello,
syzbot found the following issue on:
HEAD commit: c339f4010dea Merge tag 'platform-drivers-x86-v7.4-1' of gi..
git tree: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
console output: https://syzkaller.appspot.com/x/log.txt?x=15a3dd95580000
kernel config: https://syzkaller.appspot.com/x/.config?x=119e5f4d0a8d39cf
dashboard link: https://syzkaller.appspot.com/bug?extid=9ea34da5ca6100593c90
compiler: gcc (Debian 14.2.0-19) 14.2.0, GNU ld (GNU Binutils for Debian) 2.44
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=151a448d580000
AI-generated root cause summary:
In net/ieee802154/nl-mac.c, ieee802154_llsec_dump_table() iterates through all
network devices in the namespace and assumes any device with dev->type ==
ARPHRD_IEEE802154 has a non-NULL ml_priv pointing to struct ieee802154_mlme_ops.
However, devices such as TUN can have their link type changed to
ARPHRD_IEEE802154 via the TUNSETLINK ioctl without initializing ml_priv (leaving
it NULL). Consequently, ieee802154_llsec_dump_table() dereferences
data.ops->llsec at offset 0x38 of a NULL pointer when dumping LLSEC tables,
leading to a general protection fault / kernel crash (Denial of Service).
full analysis: https://syzkaller.appspot.com/x/ai_root_cause?x=9ea34da5ca6100593c90
IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+9ea34da5ca6100593c90@syzkaller.appspotmail.com
Oops: general protection fault, probably for non-canonical address 0xdffffc0000000007: 0000 [#1] SMP KASAN NOPTI
KASAN: null-ptr-deref in range [0x0000000000000038-0x000000000000003f]
CPU: 0 UID: 0 PID: 6025 Comm: syz-executor400 Not tainted syzkaller #0 PREEMPT(full)
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/15/2026
RIP: 0010:ieee802154_llsec_dump_table+0x204/0x5d0 net/ieee802154/nl-mac.c:778
Code: 89 f8 48 c1 e8 03 80 3c 18 00 0f 85 d3 02 00 00 4d 8b be b8 07 00 00 49 8d 7f 38 4c 89 bc 24 98 00 00 00 48 89 f8 48 c1 e8 03 <80> 3c 18 00 0f 85 a5 02 00 00 4d 8b 7f 38 4d 85 ff 0f 84 b2 01 00
RSP: 0018:ffffc900031ef4a0 EFLAGS: 00010202
RAX: 0000000000000007 RBX: dffffc0000000000 RCX: 0000000000000000
RDX: ffff8880314ccb00 RSI: ffffffff8b9ff162 RDI: 0000000000000038
RBP: 0000000000000026 R08: 0000000000000324 R09: 0000000000000324
R10: ffffc900031ef40f R11: ffffc900031ef520 R12: ffff888036830610
R13: 0000000000000000 R14: ffff88805d7a8000 R15: 0000000000000000
FS: 000055558d27f400(0000) GS:ffff88812248e000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fff8aa5bff8 CR3: 000000002ce9b000 CR4: 00000000003526f0
Call Trace:
<TASK>
genl_dumpit+0x125/0x230 net/netlink/genetlink.c:1026
netlink_dump+0x53b/0xd00 net/netlink/af_netlink.c:2351
__netlink_dump_start+0x6d6/0x990 net/netlink/af_netlink.c:2466
genl_family_rcv_msg_dumpit+0x1e2/0x2e0 net/netlink/genetlink.c:1075
genl_family_rcv_msg net/netlink/genetlink.c:1191 [inline]
genl_rcv_msg+0x471/0x800 net/netlink/genetlink.c:1209
netlink_rcv_skb+0x159/0x420 net/netlink/af_netlink.c:2576
genl_rcv+0x28/0x40 net/netlink/genetlink.c:1218
netlink_unicast_kernel net/netlink/af_netlink.c:1335 [inline]
netlink_unicast+0x668/0x950 net/netlink/af_netlink.c:1361
netlink_sendmsg+0x9ac/0x10c0 net/netlink/af_netlink.c:1920
sock_sendmsg_nosec net/socket.c:800 [inline]
__sock_sendmsg net/socket.c:818 [inline]
__sys_sendto+0x492/0x4e0 net/socket.c:2283
__do_sys_sendto net/socket.c:2290 [inline]
__se_sys_sendto net/socket.c:2286 [inline]
__x64_sys_sendto+0xe0/0x1c0 net/socket.c:2286
do_syscall_x64 arch/x86/entry/syscall_64.c:61 [inline]
do_syscall_64+0x123/0x790 arch/x86/entry/syscall_64.c:84
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f0fada8d8b7
Code: 48 89 fa 4c 89 df e8 98 1d 00 00 8b 93 08 03 00 00 59 5e 48 83 f8 fc 74 1a 5b c3 0f 1f 84 00 00 00 00 00 48 8b 44 24 10 0f 05 <5b> c3 0f 1f 80 00 00 00 00 83 e2 39 83 fa 08 75 de e8 23 ff ff ff
RSP: 002b:00007fff8aa5c1d0 EFLAGS: 00000202 ORIG_RAX: 000000000000002c
RAX: ffffffffffffffda RBX: 000055558d27f400 RCX: 00007f0fada8d8b7
RDX: 0000000000000014 RSI: 00007fff8aa5c220 RDI: 0000000000000004
RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000202 R12: 00007f0fadac9d23
R13: 00007fff8aa5c390 R14: 000000000000001d R15: 0000000000000002
</TASK>
Modules linked in:
---[ end trace 0000000000000000 ]---
RIP: 0010:ieee802154_llsec_dump_table+0x204/0x5d0 net/ieee802154/nl-mac.c:778
Code: 89 f8 48 c1 e8 03 80 3c 18 00 0f 85 d3 02 00 00 4d 8b be b8 07 00 00 49 8d 7f 38 4c 89 bc 24 98 00 00 00 48 89 f8 48 c1 e8 03 <80> 3c 18 00 0f 85 a5 02 00 00 4d 8b 7f 38 4d 85 ff 0f 84 b2 01 00
RSP: 0018:ffffc900031ef4a0 EFLAGS: 00010202
RAX: 0000000000000007 RBX: dffffc0000000000 RCX: 0000000000000000
RDX: ffff8880314ccb00 RSI: ffffffff8b9ff162 RDI: 0000000000000038
RBP: 0000000000000026 R08: 0000000000000324 R09: 0000000000000324
R10: ffffc900031ef40f R11: ffffc900031ef520 R12: ffff888036830610
R13: 0000000000000000 R14: ffff88805d7a8000 R15: 0000000000000000
FS: 000055558d27f400(0000) GS:ffff88812258e000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007ffdac0fedc4 CR3: 000000002ce9b000 CR4: 00000000003526f0
----------------
Code disassembly (best guess):
0: 89 f8 mov %edi,%eax
2: 48 c1 e8 03 shr $0x3,%rax
6: 80 3c 18 00 cmpb $0x0,(%rax,%rbx,1)
a: 0f 85 d3 02 00 00 jne 0x2e3
10: 4d 8b be b8 07 00 00 mov 0x7b8(%r14),%r15
17: 49 8d 7f 38 lea 0x38(%r15),%rdi
1b: 4c 89 bc 24 98 00 00 mov %r15,0x98(%rsp)
22: 00
23: 48 89 f8 mov %rdi,%rax
26: 48 c1 e8 03 shr $0x3,%rax
* 2a: 80 3c 18 00 cmpb $0x0,(%rax,%rbx,1) <-- trapping instruction
2e: 0f 85 a5 02 00 00 jne 0x2d9
34: 4d 8b 7f 38 mov 0x38(%r15),%r15
38: 4d 85 ff test %r15,%r15
3b: 0f .byte 0xf
3c: 84 .byte 0x84
3d: b2 01 mov $0x1,%dl
---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@googlegroups.com.
syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title
If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.
If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)
If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report
If you want to undo deduplication, reply with:
#syz undup
^ permalink raw reply [flat|nested] 2+ messages in thread
* Forwarded: [PATCH] ieee802154: nl-mac: validate device pointers before dereference
2026-10-30 12:14 [syzbot] [wpan?] general protection fault in ieee802154_llsec_dump_table (2) syzbot
@ 2026-11-01 8:37 ` syzbot
0 siblings, 0 replies; 2+ messages in thread
From: syzbot @ 2026-11-01 8:37 UTC (permalink / raw)
To: linux-kernel, syzkaller-bugs
For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.
***
Subject: [PATCH] ieee802154: nl-mac: validate device pointers before dereference
Author: skalpesh942@gmail.com
#syz test: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
A virtual network device (such as a TUN interface) can have its link
type set to ARPHRD_IEEE802154 via ioctl(tun_fd, TUNSETLINK,
ARPHRD_IEEE802154). However, such devices do not have an IEEE 802.15.4
private context allocated (dev->ieee802154_ptr is NULL) and do not
register MAC operations (dev->ml_priv / ieee802154_mlme_ops(dev) is NULL).
When dumping security keys via IEEE802154_LLSEC_LIST_KEY,
ieee802154_llsec_dump_table() iterates through all net devices and
dereferences data.ops->llsec assuming that any ARPHRD_IEEE802154 device
has valid mlme ops. Because data.ops is NULL, this causes an immediate
null-pointer dereference / General Protection Fault:
Oops: general protection fault, probably for non-canonical address
KASAN: null-ptr-deref in range [0x0000000000000038-0x000000000000003f]
RIP: 0010:ieee802154_llsec_dump_table+0x204/0x5d0
Call Trace:
<TASK>
genl_dumpit+0x125/0x230 net/netlink/genetlink.c:1026
netlink_dump+0x53b/0xd00 net/netlink/af_netlink.c:2351
__netlink_dump_start+0x6d6/0x990 net/netlink/af_netlink.c:2466
Similarly, ieee802154_dump_iface() and ieee802154_nl_get_dev() assume
that ARPHRD_IEEE802154 devices have valid dev->ieee802154_ptr and
ieee802154_mlme_ops(dev) pointers.
Fix this by ensuring dev->ieee802154_ptr and ieee802154_mlme_ops(dev)
are non-NULL before proceeding in ieee802154_nl_get_dev(),
ieee802154_dump_iface(), and ieee802154_llsec_dump_table().
Fixes: 3e9c156e2c21 ("ieee802154: add netlink interfaces for llsec")
Cc: stable@vger.kernel.org
Reported-by: syzbot+9ea34da5ca6100593c90@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=9ea34da5ca6100593c90
Signed-off-by: Kalpesh Solanki <skalpesh942@gmail.com>
---
net/ieee802154/nl-mac.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/net/ieee802154/nl-mac.c b/net/ieee802154/nl-mac.c
index 74ef0a310af..1acde5af4b5 100644
--- a/net/ieee802154/nl-mac.c
+++ b/net/ieee802154/nl-mac.c
@@ -162,7 +162,8 @@ static struct net_device *ieee802154_nl_get_dev(struct genl_info *info)
if (!dev)
return NULL;
- if (dev->type != ARPHRD_IEEE802154) {
+ if (dev->type != ARPHRD_IEEE802154 || !dev->ieee802154_ptr ||
+ !ieee802154_mlme_ops(dev)) {
dev_put(dev);
return NULL;
}
@@ -437,7 +438,8 @@ int ieee802154_dump_iface(struct sk_buff *skb, struct netlink_callback *cb)
idx = 0;
for_each_netdev(net, dev) {
- if (idx < s_idx || dev->type != ARPHRD_IEEE802154)
+ if (idx < s_idx || dev->type != ARPHRD_IEEE802154 ||
+ !dev->ieee802154_ptr || !ieee802154_mlme_ops(dev))
goto cont;
if (ieee802154_nl_fill_iface(skb, NETLINK_CB(cb->skb).portid,
@@ -771,7 +773,8 @@ ieee802154_llsec_dump_table(struct sk_buff *skb, struct netlink_callback *cb,
int rc;
for_each_netdev(net, dev) {
- if (idx < first_dev || dev->type != ARPHRD_IEEE802154)
+ if (idx < first_dev || dev->type != ARPHRD_IEEE802154 ||
+ !dev->ieee802154_ptr || !ieee802154_mlme_ops(dev))
goto skip;
data.ops = ieee802154_mlme_ops(dev);
--
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-11-01 8:37 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-30 12:14 [syzbot] [wpan?] general protection fault in ieee802154_llsec_dump_table (2) syzbot
2026-11-01 8:37 ` Forwarded: [PATCH] ieee802154: nl-mac: validate device pointers before dereference syzbot
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.