On Thu, Oct 10, 2024 at 03:57:33PM +0300, Mike Rapoport wrote: > On Wed, Oct 09, 2024 at 11:58:33PM -0700, Christoph Hellwig wrote: > > On Wed, Oct 09, 2024 at 09:08:15PM +0300, Mike Rapoport wrote: > > > /** > > > * struct execmem_info - architecture parameters for code allocations > > > + * @fill_trapping_insns: set memory to contain instructions that will trap > > > * @ranges: array of parameter sets defining architecture specific > > > * parameters for executable memory allocations. The ranges that are not > > > * explicitly initialized by an architecture use parameters defined for > > > * @EXECMEM_DEFAULT. > > > */ > > > struct execmem_info { > > > + void (*fill_trapping_insns)(void *ptr, size_t size, bool writable); > > > struct execmem_range ranges[EXECMEM_TYPE_MAX]; > > > > Why is the filler an indirect function call and not an architecture > > hook? > > The idea is to keep everything together and have execmem_info describe all > that architecture needs. But why? That's pretty different from our normal style of arch hooks, and introduces an indirect call in a security sensitive area.