Re: [PATCH -v2] x86/retpoline: Ensure default return thunk isn't used at runtime

From: Josh Poimboeuf
Date: Wed Feb 07 2024 - 12:50:33 EST


On Thu, Jan 04, 2024 at 02:26:23PM +0100, Borislav Petkov wrote:
> On Thu, Jan 04, 2024 at 02:24:46PM +0100, Borislav Petkov wrote:
> > +void __warn_thunk(void)
> > +{
> > + pr_warn_once("\n");
> > + pr_warn_once("**********************************************************\n");
> > + pr_warn_once("** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **\n");
> > + pr_warn_once("** **\n");
> > + pr_warn_once("** Unpatched return thunk in use. This should not **\n");
> > + pr_warn_once("** happen on a production kernel. Please report this **\n");
> > + pr_warn_once("** to x86@xxxxxxxxxx. **\n");
>
> I'm not yet sure here whether this should say "upstream kernels" because
> otherwise we'll get a bunch of distro or whatnot downstream kernels
> reports where we can't really do anything about...
>
> Hmmm.

At the very least, the dump_stack() should be a WARN_ON_ONCE().
Otherwise this is actually *more* likely to be ignored since automated
tools don't have a way to catch it: no taint, no "WARNING" string, no
panic_on_warn, etc.

But also, I'm not a fan of the banner. A warning is enough IMO.

Many/most warnings can be "security" issues. A production server which
ignores warnings/taints/etc would be a much bigger problem.

And as you say, there are many frankenkernels out there and upstream
doesn't want to be in the business of debugging them.

--
Josh