Re: [PATCH] kprobes: Enable tracing for mololithic kernel images

Christophe Leroy
2022-06-14T12:36:46Z

Le 14/06/2022 à 14:26, Jarkko Sakkinen a écrit :
> On Thu, Jun 09, 2022 at 06:44:45AM -0700, Luis Chamberlain wrote:
>> On Thu, Jun 09, 2022 at 08:47:38AM +0100, Russell King (Oracle) wrote:
>>> On Wed, Jun 08, 2022 at 02:59:27AM +0300, Jarkko Sakkinen wrote:
>>>> diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile
>>>> index 553866751e1a..d2bb954cd54f 100644
>>>> --- a/arch/arm/kernel/Makefile
>>>> +++ b/arch/arm/kernel/Makefile
>>>> @@ -44,6 +44,11 @@ obj-$(CONFIG_CPU_IDLE) += cpuidle.o
>>>> obj-$(CONFIG_ISA_DMA_API) += dma.o
>>>> obj-$(CONFIG_FIQ) += fiq.o fiqasm.o
>>>> obj-$(CONFIG_MODULES) += armksyms.o module.o
>>>> +ifeq ($(CONFIG_MODULES),y)
>>>> +obj-y += module_alloc.o
>>>> +else
>>>> +obj-$(CONFIG_KPROBES) += module_alloc.o
>>>> +endif
>>>
>>> Doesn't:
>>>
>>> obj-$(CONFIG_MODULES) += module_alloc.o
>>> obj-$(CONFIG_KPROBES) += module_alloc.o
>>
>> That just begs for a new kconfig symbol for the object, and for
>> the object then to be built with it.
>>
>> The archs which override the default can use ARCH_HAS_VM_ALLOC_EXEC.
>> Please note that the respective free is important as well and its
>> not clear if we need an another define for the free. Someone has
>> to do that work. We want to ensure to noexec the code on free and
>> this can vary on each arch.
>
> Let me check if I understand this (not 100% sure).
>
> So if arch define ARCH_HAS_VMALLOC_EXEC, then this would set
> config flag CONFIG_VMALLOC_EXEC, which would be used to include
> the compilation unit?
>

I guess you have two possible approaches.

Either architectures select CONFIG_ARCH_HAS_VMALLOC_EXEC at all time and
then you add a CONFIG_VMALLOC_EXEC which depends on
CONFIG_ARCH_HAS_VMALLOC_EXEC and CONFIG_MODULES or CONFIG_KPROBES,

Or architectures select CONFIG_ARCH_HAS_VMALLOC_EXEC only when either
CONFIG_MODULES or CONFIG_KPROBES is selected, in that case there is no
need for a CONFIG_VMALLOC_EXEC.

Christophe