Re: general protection fault in syscall_return_slowpath

From: Jann Horn
Date: Mon Jun 15 2020 - 03:58:11 EST


On Sun, Jun 14, 2020 at 10:03 AM Dmitry Vyukov <dvyukov@xxxxxxxxxx> wrote:
> On Tue, Mar 10, 2020 at 9:10 AM Dmitry Vyukov <dvyukov@xxxxxxxxxx> wrote:
> > On Tue, Mar 10, 2020 at 7:15 AM Nathan Chancellor
> > <natechancellor@xxxxxxxxx> wrote:
> > >
> > > On Mon, Mar 09, 2020 at 09:20:58AM +0100, Dmitry Vyukov wrote:
> > > > On Sun, Mar 8, 2020 at 7:35 PM 'Jann Horn' via syzkaller-bugs
> > > > <syzkaller-bugs@xxxxxxxxxxxxxxxx> wrote:
> > > > > Ugh, why does it build with -Werror...
> > >
> > > There are certain warnings that are specifically treated like errors:
> > >
> > > In the main Makefile:
> > >
> > > KBUILD_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types)
> > >
> > > > Now I am realizing I don't know what's the proper way to turn off
> > > > warnings entirely...
> > > >
> > > > We turn off this CONFIG_ERROR_ON_WARNING historically:
> > > > https://github.com/google/syzkaller/blob/2e9971bbbfb4df6ba0118353163a7703f3dbd6ec/dashboard/config/bits-syzbot.config#L17
> > > > and I thought that's enough. But now I realize it's not even a thing.
> > > > I see it referenced in some ChromeOS threads and there are some
> > > > discussions re upstreaming, but apparently it never existed upstream.
> > > >
> > > > make has W=n, but it seems that it can only be used to produce more
> > > > warnings. We don't pass W=3 specifically and there is no W=0.
> > > >
> > > > Should we always build with CFLAGS=-w? Is it guaranteed to work? Or is
> > > > there a better way?
> > >
> > > Would passing -Wno-werror via KCFLAGS work? Otherwise, passing
> > > -Wno-error=<specific warning> should work.
> > >
> > > Cheers,
> > > Nathan
> >
> > Filed https://github.com/google/syzkaller/issues/1635 so that this is not lost.
>
> Jann,
>
> Getting back to this.
> Are you sure building without warning will be better?
>
> Currently make enables these warnings as errors only:
>
> -Werror=strict-prototypes
> -Werror=implicit-function-declaration
> -Werror=implicit-int
> -Werror=date-time
> -Werror=incompatible-pointer-types
> -Werror=designated-init
>
> So most warnings won't cause build failure.
> And, say, converting T* to Y* implicitly may be an actual bug in the patch.

Ah, I guess you have a point there.