Messages in this thread | | | From | Sami Tolvanen <> | Date | Tue, 5 Oct 2021 13:29:02 -0700 | Subject | Re: [PATCH v4 04/15] cfi: Add DEFINE_CFI_IMMEDIATE_RETURN_STUB |
| |
On Mon, Oct 4, 2021 at 11:59 PM Peter Zijlstra <peterz@infradead.org> wrote: > > On Mon, Oct 04, 2021 at 12:10:46PM -0700, Sami Tolvanen wrote: > > On Mon, Oct 4, 2021 at 6:50 AM Peter Zijlstra <peterz@infradead.org> wrote: > > > > Why DEFINE_CFI_IMMEDIATE_RETURN_STUB() vs __no_cfi attribute that we can > > > stick on the relvant functions? > > > > To avoid accidentally creating useful gadgets for attackers. For > > example, while excluding an empty stub isn't necessarily ideal, > > allowing calls to a function that always returns zero would be worse. > > I was afraid you'd say something like that... > > > > Because I've got at least one more variant for you :-) See > > > kernel/static_call.c:__static_call_return0 > > > > Does __static_call_return0 ever get called indirectly on architectures > > that support static calls? If it's always patched into a direct call, > > the type mismatch isn't an issue. > > For x86_64 it should indeed never get called, however if you plan on > supporting i386 then you need the annotation. Also, it might get called > on arm64 which is about to grow basic HAVE_STATIC_CALL support.
Good point. I read through the latest arm64 static call proposal and while it can fall back to an indirect call, it doesn't look like that would cause issues with CFI.
> (and just in case you care about CFI on PPC32, they too grew basic > static_call support)
We are currently targeting only x86_64 and arm64, but I'll keep that in mind in case we want to add more platforms.
Sami
| |