Re: memory leak in tcindex_set_parms

From: Cong Wang
Date: Tue Feb 04 2020 - 17:26:44 EST


On Tue, Feb 4, 2020 at 1:22 PM David Miller <davem@xxxxxxxxxxxxx> wrote:
>
> From: Eric Dumazet <eric.dumazet@xxxxxxxxx>
> Date: Tue, 4 Feb 2020 10:03:16 -0800
>
> >
> >
> > On 2/4/20 9:58 AM, syzbot wrote:
> >> Hello,
> >>
> >> syzbot found the following crash on:
> >>
> >> HEAD commit: 322bf2d3 Merge branch 'for-5.6' of git://git.kernel.org/pu..
> >> git tree: upstream
> >> console output: https://syzkaller.appspot.com/x/log.txt?x=1111f8e6e00000
> >> kernel config: https://syzkaller.appspot.com/x/.config?x=8d0490614a000a37
> >> dashboard link: https://syzkaller.appspot.com/bug?extid=f0bbb2287b8993d4fa74
> >> compiler: gcc (GCC) 9.0.0 20181231 (experimental)
> >> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=17db90f6e00000
> >> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=13a94511e00000
> >>
> >> IMPORTANT: if you fix the bug, please add the following tag to the commit:
> >> Reported-by: syzbot+f0bbb2287b8993d4fa74@xxxxxxxxxxxxxxxxxxxxxxxxx
> >>
> >>
> >
> > Might have been fixed already ?
> >
> > commit 599be01ee567b61f4471ee8078870847d0a11e8e net_sched: fix an OOB access in cls_tcindex
>
> My reaction was actually that this bug is caused by this commit :)

I think it is neither of the cases, I will test the following change:

diff --git a/net/sched/cls_tcindex.c b/net/sched/cls_tcindex.c
index 09b7dc5fe7e0..2495b15ca78c 100644
--- a/net/sched/cls_tcindex.c
+++ b/net/sched/cls_tcindex.c
@@ -454,6 +454,7 @@ tcindex_set_parms(struct net *net, struct
tcf_proto *tp, unsigned long base,
oldp = p;
r->res = cr;
tcf_exts_change(&r->exts, &e);
+ tcf_exts_destroy(&e);

rcu_assign_pointer(tp->root, cp);