netfilter: cttimeout: fix slab-out-of-bounds read typo in cttimeout_net_exit
authorFlorian Westphal <fw@strlen.de>
Wed, 15 Jun 2022 13:36:54 +0000 (15:36 +0200)
committerFlorian Westphal <fw@strlen.de>
Fri, 17 Jun 2022 21:31:20 +0000 (23:31 +0200)
syzbot reports:
  BUG: KASAN: slab-out-of-bounds in __list_del_entry_valid+0xcc/0xf0 lib/list_debug.c:42
  [..]
  list_del include/linux/list.h:148 [inline]
  cttimeout_net_exit+0x211/0x540 net/netfilter/nfnetlink_cttimeout.c:617

Problem is the wrong name of the list member, so container_of() result is wrong.

Reported-by: <syzbot+92968395eedbdbd3617d@syzkaller.appspotmail.com>
Fixes: 78222bacfca9 ("netfilter: cttimeout: decouple unlink and free on netns destruction")
Signed-off-by: Florian Westphal <fw@strlen.de>
net/netfilter/nfnetlink_cttimeout.c

index af15102bc696fa2ed665e3056e30f63d8bc7f8fa..f466af4f85317adc6dc7578ce266f78238d8c6bc 100644 (file)
@@ -614,7 +614,7 @@ static void __net_exit cttimeout_net_exit(struct net *net)
 
        nf_ct_untimeout(net, NULL);
 
-       list_for_each_entry_safe(cur, tmp, &pernet->nfct_timeout_freelist, head) {
+       list_for_each_entry_safe(cur, tmp, &pernet->nfct_timeout_freelist, free_head) {
                list_del(&cur->free_head);
 
                if (refcount_dec_and_test(&cur->refcnt))