KASAN: use-after-free Write in tcf_ct_act

Status: upstream: reported C repro on 2026/10/19 22:22
Reported-by: syzbot+f868e05096e102a67797@syzkaller.appspotmail.com
First crash: 24d, last: 24d
▶ ▼ Similar bugs (1)
Kernel Title Rank 🛈 Repro Cause bisect Fix bisect Count Last Reported Patched Status
linux-5.15 KASAN: use-after-free Write in tcf_ct_act origin:lts-only 22 syz, C 30 15d 47d 0/3 upstream: reported C repro on 2026/09/27 05:59

Sample crash report:
==================================================================
BUG: KASAN: use-after-free in skb_clear_hash include/linux/skbuff.h:1458 [inline]
BUG: KASAN: use-after-free in tcf_ct_handle_fragments net/sched/act_ct.c:925 [inline]
BUG: KASAN: use-after-free in tcf_ct_act+0x3798/0x4000 net/sched/act_ct.c:1174
Write of size 4 at addr ffff0000cb3c9d14 by task syz.0.18/4601

CPU: 0 PID: 4601 Comm: syz.0.18 Not tainted syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/14/2026
Call trace:
 dump_backtrace+0x1c4/0x1f0 arch/arm64/kernel/stacktrace.c:158
 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:165
 __dump_stack+0x30/0x40 lib/dump_stack.c:88
 dump_stack_lvl+0xf4/0x15c lib/dump_stack.c:106
 print_address_description+0x88/0x218 mm/kasan/report.c:316
 print_report+0x50/0x68 mm/kasan/report.c:420
 kasan_report+0xa8/0xfc mm/kasan/report.c:524
 __asan_report_store4_noabort+0x2c/0x38 mm/kasan/report_generic.c:355
 skb_clear_hash include/linux/skbuff.h:1458 [inline]
 tcf_ct_handle_fragments net/sched/act_ct.c:925 [inline]
 tcf_ct_act+0x3798/0x4000 net/sched/act_ct.c:1174
 tcf_action_exec+0x164/0x544 net/sched/act_api.c:1107
 tcf_exts_exec include/net/pkt_cls.h:351 [inline]
 mall_classify+0x150/0x21c net/sched/cls_matchall.c:40
 __tcf_classify net/sched/cls_api.c:1569 [inline]
 tcf_classify+0x1b4/0x9d4 net/sched/cls_api.c:1635
 sch_handle_ingress net/core/dev.c:5262 [inline]
 __netif_receive_skb_core+0x17b0/0x31a0 net/core/dev.c:5480
 __netif_receive_skb_one_core net/core/dev.c:5618 [inline]
 __netif_receive_skb+0x78/0x2b0 net/core/dev.c:5734
 netif_receive_skb_internal net/core/dev.c:5820 [inline]
 netif_receive_skb+0x1e8/0x928 net/core/dev.c:5879
 tun_rx_batched+0x4ac/0x600 drivers/net/tun.c:-1
 tun_get_user+0x1f70/0x3268 drivers/net/tun.c:2009
 tun_chr_write_iter+0xfc/0x200 drivers/net/tun.c:2055
 call_write_iter include/linux/fs.h:2271 [inline]
 new_sync_write fs/read_write.c:491 [inline]
 vfs_write+0x3c8/0x7c8 fs/read_write.c:584
 ksys_write+0x12c/0x228 fs/read_write.c:637
 __do_sys_write fs/read_write.c:649 [inline]
 __se_sys_write fs/read_write.c:646 [inline]
 __arm64_sys_write+0x7c/0x90 fs/read_write.c:646
 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline]
 invoke_syscall+0x98/0x290 arch/arm64/kernel/syscall.c:52
 el0_svc_common+0x13c/0x258 arch/arm64/kernel/syscall.c:140
 do_el0_svc+0x5c/0x134 arch/arm64/kernel/syscall.c:204
 el0_svc+0x58/0x12c arch/arm64/kernel/entry-common.c:637
 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655
 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:585

Allocated by task 4601:
 kasan_save_stack mm/kasan/common.c:46 [inline]
 kasan_set_track+0x4c/0x80 mm/kasan/common.c:53
 kasan_save_alloc_info+0x24/0x30 mm/kasan/generic.c:505
 __kasan_slab_alloc+0x70/0x88 mm/kasan/common.c:329
 kasan_slab_alloc include/linux/kasan.h:201 [inline]
 slab_post_alloc_hook+0x74/0x430 mm/slab.h:737
 slab_alloc_node mm/slub.c:3359 [inline]
 kmem_cache_alloc_node+0x258/0x344 mm/slub.c:3404
 __alloc_skb+0x128/0x728 net/core/skbuff.c:505
 alloc_skb include/linux/skbuff.h:1303 [inline]
 alloc_skb_with_frags+0xa8/0x598 net/core/skbuff.c:6198
 sock_alloc_send_pskb+0x784/0x898 net/core/sock.c:2763
 tun_alloc_skb drivers/net/tun.c:1529 [inline]
 tun_get_user+0x778/0x3268 drivers/net/tun.c:1847
 tun_chr_write_iter+0xfc/0x200 drivers/net/tun.c:2055
 call_write_iter include/linux/fs.h:2271 [inline]
 new_sync_write fs/read_write.c:491 [inline]
 vfs_write+0x3c8/0x7c8 fs/read_write.c:584
 ksys_write+0x12c/0x228 fs/read_write.c:637
 __do_sys_write fs/read_write.c:649 [inline]
 __se_sys_write fs/read_write.c:646 [inline]
 __arm64_sys_write+0x7c/0x90 fs/read_write.c:646
 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline]
 invoke_syscall+0x98/0x290 arch/arm64/kernel/syscall.c:52
 el0_svc_common+0x13c/0x258 arch/arm64/kernel/syscall.c:140
 do_el0_svc+0x5c/0x134 arch/arm64/kernel/syscall.c:204
 el0_svc+0x58/0x12c arch/arm64/kernel/entry-common.c:637
 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655
 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:585

Freed by task 4601:
 kasan_save_stack mm/kasan/common.c:46 [inline]
 kasan_set_track+0x4c/0x80 mm/kasan/common.c:53
 kasan_save_free_info+0x38/0x5c mm/kasan/generic.c:516
 ____kasan_slab_free+0x148/0x1b0 mm/kasan/common.c:237
 __kasan_slab_free+0x18/0x28 mm/kasan/common.c:245
 kasan_slab_free include/linux/kasan.h:177 [inline]
 slab_free_hook mm/slub.c:1729 [inline]
 slab_free_freelist_hook+0x16c/0x1e8 mm/slub.c:1755
 slab_free mm/slub.c:3687 [inline]
 kmem_cache_free+0x118/0x318 mm/slub.c:3709
 kfree_skbmem+0x10c/0x198 net/core/skbuff.c:-1
 __kfree_skb net/core/skbuff.c:871 [inline]
 kfree_skb_reason+0x1a0/0x450 net/core/skbuff.c:893
 kfree_skb include/linux/skbuff.h:1252 [inline]
 nf_ct_frag6_queue net/ipv6/netfilter/nf_conntrack_reasm.c:260 [inline]
 nf_ct_frag6_gather+0xc28/0x1894 net/ipv6/netfilter/nf_conntrack_reasm.c:486
 tcf_ct_handle_fragments net/sched/act_ct.c:909 [inline]
 tcf_ct_act+0xcb8/0x4000 net/sched/act_ct.c:1174
 tcf_action_exec+0x164/0x544 net/sched/act_api.c:1107
 tcf_exts_exec include/net/pkt_cls.h:351 [inline]
 mall_classify+0x150/0x21c net/sched/cls_matchall.c:40
 __tcf_classify net/sched/cls_api.c:1569 [inline]
 tcf_classify+0x1b4/0x9d4 net/sched/cls_api.c:1635
 sch_handle_ingress net/core/dev.c:5262 [inline]
 __netif_receive_skb_core+0x17b0/0x31a0 net/core/dev.c:5480
 __netif_receive_skb_one_core net/core/dev.c:5618 [inline]
 __netif_receive_skb+0x78/0x2b0 net/core/dev.c:5734
 netif_receive_skb_internal net/core/dev.c:5820 [inline]
 netif_receive_skb+0x1e8/0x928 net/core/dev.c:5879
 tun_rx_batched+0x4ac/0x600 drivers/net/tun.c:-1
 tun_get_user+0x1f70/0x3268 drivers/net/tun.c:2009
 tun_chr_write_iter+0xfc/0x200 drivers/net/tun.c:2055
 call_write_iter include/linux/fs.h:2271 [inline]
 new_sync_write fs/read_write.c:491 [inline]
 vfs_write+0x3c8/0x7c8 fs/read_write.c:584
 ksys_write+0x12c/0x228 fs/read_write.c:637
 __do_sys_write fs/read_write.c:649 [inline]
 __se_sys_write fs/read_write.c:646 [inline]
 __arm64_sys_write+0x7c/0x90 fs/read_write.c:646
 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline]
 invoke_syscall+0x98/0x290 arch/arm64/kernel/syscall.c:52
 el0_svc_common+0x13c/0x258 arch/arm64/kernel/syscall.c:140
 do_el0_svc+0x5c/0x134 arch/arm64/kernel/syscall.c:204
 el0_svc+0x58/0x12c arch/arm64/kernel/entry-common.c:637
 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655
 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:585

The buggy address belongs to the object at ffff0000cb3c9c80
 which belongs to the cache skbuff_head_cache of size 240
The buggy address is located 148 bytes inside of
 240-byte region [ffff0000cb3c9c80, ffff0000cb3c9d70)

The buggy address belongs to the physical page:
page:00000000ff2dc8f0 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x10b3c9
flags: 0x5ffc00000000200(slab|node=0|zone=2|lastcpupid=0x7ff)
raw: 05ffc00000000200 fffffc0003300380 dead000000000002 ffff0000c0864180
raw: 0000000000000000 00000000800c000c 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff0000cb3c9c00: fb fb fb fb fb fb fc fc fc fc fc fc fc fc fc fc
 ffff0000cb3c9c80: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff0000cb3c9d00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fc fc
                         ^
 ffff0000cb3c9d80: fc fc fc fc fc fc fc fc 00 00 00 00 00 00 00 00
 ffff0000cb3c9e00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
==================================================================

Crashes (5):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/10/20 04:18 linux-6.1.y 79807e970724 72cdc28d .config console log report syz / log C [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in tcf_ct_act
2026/10/20 03:37 linux-6.1.y 79807e970724 72cdc28d .config console log report syz / log C [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in tcf_ct_act
2026/10/20 02:53 linux-6.1.y 79807e970724 72cdc28d .config console log report syz / log C [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in tcf_ct_act
2026/10/20 03:02 linux-6.1.y 79807e970724 72cdc28d .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in tcf_ct_act
2026/10/19 22:21 linux-6.1.y 79807e970724 72cdc28d .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in tcf_ct_act
* Struck through repros no longer work on HEAD.