[RFC PATCH v2 14/26] early kprobes: ARM: introduce early kprobes related code area.

Russell King - ARM Linux linux at arm.linux.org.uk
Fri Feb 13 09:32:44 PST 2015


On Thu, Feb 12, 2015 at 08:20:35PM +0800, Wang Nan wrote:
> In arm's vmlinux.lds, introduces code area inside text section.
> Executable area used by early kprobes will be allocated from there.
> 
> Signed-off-by: Wang Nan <wangnan0 at huawei.com>
> ---
>  arch/arm/include/asm/kprobes.h | 31 +++++++++++++++++++++++++++++--
>  arch/arm/kernel/vmlinux.lds.S  |  2 ++
>  2 files changed, 31 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/include/asm/kprobes.h b/arch/arm/include/asm/kprobes.h
> index 3ea9be5..0a4421e 100644
> --- a/arch/arm/include/asm/kprobes.h
> +++ b/arch/arm/include/asm/kprobes.h
> @@ -17,16 +17,42 @@
>  #define _ARM_KPROBES_H
>  
>  #include <linux/types.h>
> -#include <linux/ptrace.h>
> -#include <linux/notifier.h>
>  
>  #define __ARCH_WANT_KPROBES_INSN_SLOT
>  #define MAX_INSN_SIZE			2
>  
> +#ifdef __ASSEMBLY__
> +
> +#define KPROBE_OPCODE_SIZE	4
> +#define MAX_OPTINSN_SIZE (optprobe_template_end - optprobe_template_entry)
> +
> +#ifdef CONFIG_EARLY_KPROBES
> +#define EARLY_KPROBES_CODES_AREA					\
> +	. = ALIGN(8);							\
> +	VMLINUX_SYMBOL(__early_kprobes_start) = .;			\
> +	VMLINUX_SYMBOL(__early_kprobes_code_area_start) = .;		\
> +	. = . + MAX_OPTINSN_SIZE * CONFIG_NR_EARLY_KPROBES_SLOTS;	\
> +	VMLINUX_SYMBOL(__early_kprobes_code_area_end) = .;		\
> +	. = ALIGN(8);							\
> +	VMLINUX_SYMBOL(__early_kprobes_insn_slot_start) = .;		\
> +	. = . + MAX_INSN_SIZE * KPROBE_OPCODE_SIZE * CONFIG_NR_EARLY_KPROBES_SLOTS;\
> +	VMLINUX_SYMBOL(__early_kprobes_insn_slot_end) = .;		\
> +	VMLINUX_SYMBOL(__early_kprobes_end) = .;
> +
> +#else
> +#define EARLY_KPROBES_CODES_AREA
> +#endif

Please don't spread vmlinux specific stuff around the kernel include files.
Let's try to keep it contained to a minimal set of files.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.



More information about the linux-arm-kernel mailing list