Re: WARNING in get_pat_info

From: Dave Hansen
Date: Tue Oct 15 2024 - 19:41:00 EST


On 10/15/24 15:29, Marius Fleischer wrote:
> Hi Jens,
> Please find the config we used for testing the reproducer on v5.15.167
> - hope that helps.
>
> Which of the reproducers did you try? Upon more testing, it seems like the
> C reproducer (repro.c) is a little unstable on v5.15.167 but repro.syz works
> fine. Instructions on how to run repro.syz are here:
> https://github.com/google/syzkaller/blob/master/docs/executing_syzkaller_programs.md

FWIW, those instructions don't work if you don't have 'go' in your path
already. Even when you do, it apparently needs to be a pretty recent
version.

They also say "Unpack it (a tarball) to $HOME/goroot". I read that as:

mkdir $HOME/goroot
cd $HOME/goroot
tar -zxf $TARBALL

When I think it really means something like:

cd $HOME
tar -zxf $TARBALL
mv go goroot

or something.

I figured it out eventually, but it would be nice to make those
instructions a _bit_ more clear, especially for folks that don't have a
recent go toolchain already sitting around.

Oh, and the go toolchain had a jolly old time beating up on my poor
little 4GB-of-RAM test VM. I had to double its RAM just to compile this
beast.

> TL;DR compile syzkaller, copy syz-execprog, syz-executor, repro.syz into
> the VM and run the command below inside the VM
> ./syz-execprog -executor=./syz-executor -procs=8 -repeat=0 repro.syz
>
> Please let me know if you need more details from us!

It didn't reproduce for me, either, at least ~10k executed programs in.
How long should it take?

The next step would be to figure out specifically why get_pat_info()
failed. To double check that io_uring is the thing that's involved and
(presumably) why follow_phys() failed. Basically, I think we need to
know what state the page tables and the VMA were in.