Re: general protection fault in show_timer

From: Eric Biggers
Date: Mon Dec 18 2017 - 20:01:28 EST


On Fri, Dec 15, 2017 at 05:40:15PM +0100, Thomas Gleixner wrote:
> On Thu, 14 Dec 2017, Eric Biggers wrote:
> > On Thu, Dec 14, 2017 at 04:34:12PM +0100, Thomas Gleixner wrote:
> > > On Thu, 14 Dec 2017, Dmitry Vyukov wrote:
> > > > On Thu, Dec 14, 2017 at 3:26 PM, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
> > > > > On Tue, 12 Dec 2017, Greg KH wrote:
> > > > >> Did this ever go anywhere? I don't see it in Linus's tree yet...
> > > > >
> > > > > I learned yesterday that syzboz is understuffed and cannot test patches, so
> > > > > I need to find a minute to run the reproducer myself and verify that the
> > > > > patch is correct.
> > > >
> > > > Hi Thomas,
> > > >
> > > > Why do you say so? Have you tried to ask it to test?
> > > > https://github.com/google/syzkaller/blob/master/docs/syzbot.md#communication-with-syzbot
> > > > What happened?
> > >
> > > Eric explained that to me yesterday and I did not try yet.
> > >
> >
> > Your patch definitely fixes the bug (I tested the C reproducers, you just need
> > to build a kernel with CONFIG_CHECKPOINT_RESTORE=y and CONFIG_POSIX_TIMERS=y,
> > then run them). The real question is whether the check being introduced is too
> > strict -- are there users passing in other values for ->sigev_notify that would
> > be broken? That I can't really answer.
>
> Me neither. The manpage is rather clear about the possible values, so I
> don't expect wreckage. Aside of that non canonical values would have to
> have bit 2, i.e. SIGEV_THREAD_ID cleared because that already has a
> restriction that it's only allowed with SIGEV_SIGNAL. So unlikely...
>
> If really some crap application breaks we can handle it in the default
> clause by setting it to SIGEV_SIGNAL. Though I rather prefer not to do that
> unless it turns out to be absolutely necessary.
>

I see a fix is committed now (thanks!), so let's tell syzbot:

#syz fix: posix-timer: Properly check sigevent->sigev_notify