Re: [PATCH 0/2] um: improve UML page fault handling

From: Petr Tesařík
Date: Fri Jan 26 2024 - 05:21:45 EST


On Fri, 5 Jan 2024 07:51:09 +0100
Petr Tesařík <petr@xxxxxxxxxxx> wrote:

> Helo Richard,
>
> Am Fri, 5 Jan 2024 00:22:11 +0100 (CET)
> schrieb Richard Weinberger <richard@xxxxxx>:
>
> > ----- Ursprüngliche Mail -----
> > > Von: "Petr Tesarik" <petrtesarik@xxxxxxxxxxxxxxx>
> > > An: "richard" <richard@xxxxxx>, "anton ivanov" <anton.ivanov@xxxxxxxxxxxxxxxxxx>, "Johannes Berg"
> > > <johannes@xxxxxxxxxxxxxxxx>, "linux-um" <linux-um@xxxxxxxxxxxxxxxxxxx>, "linux-kernel" <linux-kernel@xxxxxxxxxxxxxxx>
> > > CC: "Roberto Sassu" <roberto.sassu@xxxxxxxxxxxxxxx>, petr@xxxxxxxxxxx, "Petr Tesarik"
> > > <petr.tesarik1@xxxxxxxxxxxxxxxxxxx>
> > > Gesendet: Freitag, 15. Dezember 2023 13:14:29
> > > Betreff: [PATCH 0/2] um: improve UML page fault handling
> >
> > > From: Petr Tesarik <petr.tesarik1@xxxxxxxxxxxxxxxxxxx>
> > >
> > > Improve UML handling of segmentation faults in kernel mode. Although
> > > such page faults are generally caused by a kernel bug, it is annoying
> > > if they cause an infinite loop, or panic the kernel. More importantly,
> > > a robust implementation allows to write KUnit tests for various guard
> > > pages, preventing potential kernel self-protection regressions.
> > >
> > > Petr Tesarik (2):
> > > um: do not panic on kernel mode faults
> > > um: oops on accessing an non-present page in the vmalloc area
> >
> > I think this is a good thing to have.
>
> Thanks for the feedback.
>
> > For the implementation side, this needs to use the oops_* helpers
> > from kernel/panic.c and taint the kernel, etc...
>
> Yes, I did see that coming but wanted to get some confirmation that
> it's worth the effort.
>
> > See arch/x86/kernel/dumpstack.c die() and friends.
>
> This implementation also calls die notifiers, but AFAICS different
> architectures are not very consistent in their use. Do you also
> require die notifiers for the UML implementation?

It seems I won't have time for this in the near future... Can I start
by sending a trivial patch that panics the kernel if kernel mode tries
to access a vmalloc guard page? That's something I can do immediately,
and it's still better than getting page faults in an infinite loop...

Petr T