Messages in this thread | | | From | Dmitry Vyukov <> | Date | Tue, 7 Mar 2017 10:43:32 +0100 | Subject | Re: perf: use-after-free in perf_release |
| |
On Tue, Mar 7, 2017 at 10:37 AM, Peter Zijlstra <peterz@infradead.org> wrote: > On Tue, Mar 07, 2017 at 10:26:20AM +0100, Dmitry Vyukov wrote: >> On Tue, Mar 7, 2017 at 10:08 AM, Peter Zijlstra <peterz@infradead.org> wrote: >> > On Mon, Mar 06, 2017 at 02:34:50PM +0100, Dmitry Vyukov wrote: >> >> FWIW here are 2 syzkaller programs that triggered the bug: >> >> https://gist.githubusercontent.com/dvyukov/d67f980050589775237a7fbdff226bec/raw/4bca72861cb2ede64059b6dad403e19f425a361f/gistfile1.txt >> > >> > Hurm, previously your gistfile thingies were actual C, but this thing is >> > gibberish. How do I run it? >> >> The same way we did it here: >> https://groups.google.com/d/msg/syzkaller/MHXa-o8foyc/yrGfDOrwAQAJ > > Oh right, completely forgot about that. The last gistfile stuff I found > in my history were actual C files. > >> This will run it in infinite loop in 10 parallel processes: >> ./syz-execprog -repeat=0 -procs=10 -sandbox=namespace gistfile1.txt >> -sandbox=namespace will require CONFIG_USER_NS=y, I am not sure if it >> is actually required, but that's how bots triggered it. You can do >> -sandbox=none as well. > > I still have an ancient syzcaller; -sandbox doesn't exist and I needed > to add -executor=bin/syz-executor but now it appears to run. > > I'll go up procs, 10 is somewhat low I feel. > > > --- > > root@ivb-ep:~/gopath/src/github.com/google/syzkaller# ./bin/syz-execprog -repeat=0 -procs=10 -executor=bin/syz-executor gistfile2.txt > 2017/03/07 10:35:14 parsed 2 programs > 2017/03/07 10:35:14 executed 0 programs > result: failed=false hanged=false err=executor is not serving > > 2017/03/07 10:36:14 executed 10 programs > result: failed=false hanged=false err=executor is not serving > > result: failed=false hanged=false err=executor is not serving > > result: failed=false hanged=false err=executor is not serving > > result: failed=false hanged=false err=executor is not serving > > result: failed=false hanged=false err=executor is not serving > > result: failed=false hanged=false err=executor is not serving > > result: failed=false hanged=false err=executor is not serving > > result: failed=false hanged=false err=executor is not serving > > result: failed=false hanged=false err=executor is not serving
An old syzkaller may not understand part of syscalls in the program and silently drop them, you need a new one.
Here is a straightforward conversion of the syzkaller program to C (with/without namespace sandbox):
https://gist.githubusercontent.com/dvyukov/b6540bed50b7da1dff3d7373ba570c77/raw/fd5f2f3aaa52b70b2bb9f114cf8a3226d8a30960/gistfile1.txt https://gist.githubusercontent.com/dvyukov/dbd8ec38bcb50df4bdc95210d4247b09/raw/f9cbb5e17cd4ff4a7a7881c97dea7d6cd6dd8bf1/gistfile1.txt
That's also with -procs=10, you can change number of procs in main funciton.
But I wasn't able to reproduce the crash using these programs (neither the syzkaller program), that's why I did not provide it all initially.
| |