* [PATCH 0/3] arm64: trivial constification patches @ 2019-08-13 14:16 Mark Rutland 2019-08-13 14:16 ` [PATCH 1/3] arm64: constify icache_policy_str[] Mark Rutland ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Mark Rutland @ 2019-08-13 14:16 UTC (permalink / raw) To: linux-arm-kernel; +Cc: mark.rutland, catalin.marinas, will.deacon I spotted a few arrays under arm64 that we can mark const, as their contents are never intentionally modified at runtime. Doing this will make it a bit easier to spot bugs, and (in the case of sys64_hook) will make it marginally harder to get the kernel to execute the wrong thing. Our crypto algorithm and undef_hook arrays all have runtime-modified state, so these cannot be made const. Thanks, Mark. Mark Rutland (3): arm64: constify icache_policy_str[] arm64: constify aarch64_insn_encoding_class[] arm64: constify sys64_hook instances arch/arm64/kernel/cpuinfo.c | 2 +- arch/arm64/kernel/insn.c | 2 +- arch/arm64/kernel/traps.c | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) -- 2.11.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/3] arm64: constify icache_policy_str[] 2019-08-13 14:16 [PATCH 0/3] arm64: trivial constification patches Mark Rutland @ 2019-08-13 14:16 ` Mark Rutland 2019-08-14 9:07 ` Dave Martin 2019-08-13 14:16 ` [PATCH 2/3] arm64: constify aarch64_insn_encoding_class[] Mark Rutland 2019-08-13 14:16 ` [PATCH 3/3] arm64: constify sys64_hook instances Mark Rutland 2 siblings, 1 reply; 7+ messages in thread From: Mark Rutland @ 2019-08-13 14:16 UTC (permalink / raw) To: linux-arm-kernel; +Cc: mark.rutland, catalin.marinas, will.deacon The icache_policy_str[] array contains compile-time constant data, and is never intentionally modified, so let's mark it as const. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> --- arch/arm64/kernel/cpuinfo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c index 876055e37352..05933c065732 100644 --- a/arch/arm64/kernel/cpuinfo.c +++ b/arch/arm64/kernel/cpuinfo.c @@ -33,7 +33,7 @@ DEFINE_PER_CPU(struct cpuinfo_arm64, cpu_data); static struct cpuinfo_arm64 boot_cpu_data; -static char *icache_policy_str[] = { +static const char *icache_policy_str[] = { [0 ... ICACHE_POLICY_PIPT] = "RESERVED/UNKNOWN", [ICACHE_POLICY_VIPT] = "VIPT", [ICACHE_POLICY_PIPT] = "PIPT", -- 2.11.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] arm64: constify icache_policy_str[] 2019-08-13 14:16 ` [PATCH 1/3] arm64: constify icache_policy_str[] Mark Rutland @ 2019-08-14 9:07 ` Dave Martin 0 siblings, 0 replies; 7+ messages in thread From: Dave Martin @ 2019-08-14 9:07 UTC (permalink / raw) To: Mark Rutland; +Cc: catalin.marinas, will.deacon, linux-arm-kernel On Tue, Aug 13, 2019 at 03:16:37PM +0100, Mark Rutland wrote: > The icache_policy_str[] array contains compile-time constant data, and > is never intentionally modified, so let's mark it as const. > > Signed-off-by: Mark Rutland <mark.rutland@arm.com> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will.deacon@arm.com> > --- > arch/arm64/kernel/cpuinfo.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c > index 876055e37352..05933c065732 100644 > --- a/arch/arm64/kernel/cpuinfo.c > +++ b/arch/arm64/kernel/cpuinfo.c > @@ -33,7 +33,7 @@ > DEFINE_PER_CPU(struct cpuinfo_arm64, cpu_data); > static struct cpuinfo_arm64 boot_cpu_data; > > -static char *icache_policy_str[] = { > +static const char *icache_policy_str[] = { Can this be const char *const ? The strings will be in .rodata and can't be modified anyway, but I presume we don't modify the array elements either... > [0 ... ICACHE_POLICY_PIPT] = "RESERVED/UNKNOWN", > [ICACHE_POLICY_VIPT] = "VIPT", > [ICACHE_POLICY_PIPT] = "PIPT", [...] Cheers ---Dave _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/3] arm64: constify aarch64_insn_encoding_class[] 2019-08-13 14:16 [PATCH 0/3] arm64: trivial constification patches Mark Rutland 2019-08-13 14:16 ` [PATCH 1/3] arm64: constify icache_policy_str[] Mark Rutland @ 2019-08-13 14:16 ` Mark Rutland 2019-08-14 9:10 ` Dave Martin 2019-08-13 14:16 ` [PATCH 3/3] arm64: constify sys64_hook instances Mark Rutland 2 siblings, 1 reply; 7+ messages in thread From: Mark Rutland @ 2019-08-13 14:16 UTC (permalink / raw) To: linux-arm-kernel; +Cc: mark.rutland, catalin.marinas, will.deacon The aarch64_insn_encoding_class[] array contains compile-time constant data, and is never intentionally modified, so let's mark it as const. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> --- arch/arm64/kernel/insn.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kernel/insn.c b/arch/arm64/kernel/insn.c index 84b059ed04fc..d801a7094076 100644 --- a/arch/arm64/kernel/insn.c +++ b/arch/arm64/kernel/insn.c @@ -26,7 +26,7 @@ #define AARCH64_INSN_N_BIT BIT(22) #define AARCH64_INSN_LSL_12 BIT(22) -static int aarch64_insn_encoding_class[] = { +static const int aarch64_insn_encoding_class[] = { AARCH64_INSN_CLS_UNKNOWN, AARCH64_INSN_CLS_UNKNOWN, AARCH64_INSN_CLS_UNKNOWN, -- 2.11.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/3] arm64: constify aarch64_insn_encoding_class[] 2019-08-13 14:16 ` [PATCH 2/3] arm64: constify aarch64_insn_encoding_class[] Mark Rutland @ 2019-08-14 9:10 ` Dave Martin 0 siblings, 0 replies; 7+ messages in thread From: Dave Martin @ 2019-08-14 9:10 UTC (permalink / raw) To: Mark Rutland; +Cc: catalin.marinas, will.deacon, linux-arm-kernel On Tue, Aug 13, 2019 at 03:16:38PM +0100, Mark Rutland wrote: > The aarch64_insn_encoding_class[] array contains compile-time constant > data, and is never intentionally modified, so let's mark it as const. > > Signed-off-by: Mark Rutland <mark.rutland@arm.com> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will.deacon@arm.com> > --- > arch/arm64/kernel/insn.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm64/kernel/insn.c b/arch/arm64/kernel/insn.c > index 84b059ed04fc..d801a7094076 100644 > --- a/arch/arm64/kernel/insn.c > +++ b/arch/arm64/kernel/insn.c > @@ -26,7 +26,7 @@ > #define AARCH64_INSN_N_BIT BIT(22) > #define AARCH64_INSN_LSL_12 BIT(22) > > -static int aarch64_insn_encoding_class[] = { > +static const int aarch64_insn_encoding_class[] = { > AARCH64_INSN_CLS_UNKNOWN, > AARCH64_INSN_CLS_UNKNOWN, > AARCH64_INSN_CLS_UNKNOWN, This is an implementation detail of aarch64_get_insn_class(), so it could be moved inside there, or rewritten as a switch. It works as-is though. Either way, Reviewed-by: Dave Martin <Dave.Martin@arm.com> Cheers ---Dave _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 3/3] arm64: constify sys64_hook instances 2019-08-13 14:16 [PATCH 0/3] arm64: trivial constification patches Mark Rutland 2019-08-13 14:16 ` [PATCH 1/3] arm64: constify icache_policy_str[] Mark Rutland 2019-08-13 14:16 ` [PATCH 2/3] arm64: constify aarch64_insn_encoding_class[] Mark Rutland @ 2019-08-13 14:16 ` Mark Rutland 2019-08-14 9:12 ` Dave Martin 2 siblings, 1 reply; 7+ messages in thread From: Mark Rutland @ 2019-08-13 14:16 UTC (permalink / raw) To: linux-arm-kernel; +Cc: mark.rutland, catalin.marinas, will.deacon All instances of struct sys64_hook contain compile-time constant data, and are never inentionally modified, so let's make them all const. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> --- arch/arm64/kernel/traps.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c index 42c8422cdf4a..a5d7ce4297b0 100644 --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c @@ -511,7 +511,7 @@ struct sys64_hook { void (*handler)(unsigned int esr, struct pt_regs *regs); }; -static struct sys64_hook sys64_hooks[] = { +static const struct sys64_hook sys64_hooks[] = { { .esr_mask = ESR_ELx_SYS64_ISS_EL0_CACHE_OP_MASK, .esr_val = ESR_ELx_SYS64_ISS_EL0_CACHE_OP_VAL, @@ -636,7 +636,7 @@ static void compat_cntfrq_read_handler(unsigned int esr, struct pt_regs *regs) arm64_compat_skip_faulting_instruction(regs, 4); } -static struct sys64_hook cp15_32_hooks[] = { +static const struct sys64_hook cp15_32_hooks[] = { { .esr_mask = ESR_ELx_CP15_32_ISS_SYS_MASK, .esr_val = ESR_ELx_CP15_32_ISS_SYS_CNTFRQ, @@ -656,7 +656,7 @@ static void compat_cntvct_read_handler(unsigned int esr, struct pt_regs *regs) arm64_compat_skip_faulting_instruction(regs, 4); } -static struct sys64_hook cp15_64_hooks[] = { +static const struct sys64_hook cp15_64_hooks[] = { { .esr_mask = ESR_ELx_CP15_64_ISS_SYS_MASK, .esr_val = ESR_ELx_CP15_64_ISS_SYS_CNTVCT, @@ -667,7 +667,7 @@ static struct sys64_hook cp15_64_hooks[] = { asmlinkage void __exception do_cp15instr(unsigned int esr, struct pt_regs *regs) { - struct sys64_hook *hook, *hook_base; + const struct sys64_hook *hook, *hook_base; if (!cp15_cond_valid(esr, regs)) { /* @@ -707,7 +707,7 @@ asmlinkage void __exception do_cp15instr(unsigned int esr, struct pt_regs *regs) asmlinkage void __exception do_sysinstr(unsigned int esr, struct pt_regs *regs) { - struct sys64_hook *hook; + const struct sys64_hook *hook; for (hook = sys64_hooks; hook->handler; hook++) if ((hook->esr_mask & esr) == hook->esr_val) { -- 2.11.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] arm64: constify sys64_hook instances 2019-08-13 14:16 ` [PATCH 3/3] arm64: constify sys64_hook instances Mark Rutland @ 2019-08-14 9:12 ` Dave Martin 0 siblings, 0 replies; 7+ messages in thread From: Dave Martin @ 2019-08-14 9:12 UTC (permalink / raw) To: Mark Rutland; +Cc: catalin.marinas, will.deacon, linux-arm-kernel On Tue, Aug 13, 2019 at 03:16:39PM +0100, Mark Rutland wrote: > All instances of struct sys64_hook contain compile-time constant data, > and are never inentionally modified, so let's make them all const. > > Signed-off-by: Mark Rutland <mark.rutland@arm.com> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will.deacon@arm.com> > --- > arch/arm64/kernel/traps.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c > index 42c8422cdf4a..a5d7ce4297b0 100644 > --- a/arch/arm64/kernel/traps.c > +++ b/arch/arm64/kernel/traps.c > @@ -511,7 +511,7 @@ struct sys64_hook { > void (*handler)(unsigned int esr, struct pt_regs *regs); > }; > > -static struct sys64_hook sys64_hooks[] = { > +static const struct sys64_hook sys64_hooks[] = { > { > .esr_mask = ESR_ELx_SYS64_ISS_EL0_CACHE_OP_MASK, > .esr_val = ESR_ELx_SYS64_ISS_EL0_CACHE_OP_VAL, > @@ -636,7 +636,7 @@ static void compat_cntfrq_read_handler(unsigned int esr, struct pt_regs *regs) > arm64_compat_skip_faulting_instruction(regs, 4); > } > > -static struct sys64_hook cp15_32_hooks[] = { > +static const struct sys64_hook cp15_32_hooks[] = { > { > .esr_mask = ESR_ELx_CP15_32_ISS_SYS_MASK, > .esr_val = ESR_ELx_CP15_32_ISS_SYS_CNTFRQ, > @@ -656,7 +656,7 @@ static void compat_cntvct_read_handler(unsigned int esr, struct pt_regs *regs) > arm64_compat_skip_faulting_instruction(regs, 4); > } > > -static struct sys64_hook cp15_64_hooks[] = { > +static const struct sys64_hook cp15_64_hooks[] = { > { > .esr_mask = ESR_ELx_CP15_64_ISS_SYS_MASK, > .esr_val = ESR_ELx_CP15_64_ISS_SYS_CNTVCT, > @@ -667,7 +667,7 @@ static struct sys64_hook cp15_64_hooks[] = { > > asmlinkage void __exception do_cp15instr(unsigned int esr, struct pt_regs *regs) > { > - struct sys64_hook *hook, *hook_base; > + const struct sys64_hook *hook, *hook_base; > > if (!cp15_cond_valid(esr, regs)) { > /* > @@ -707,7 +707,7 @@ asmlinkage void __exception do_cp15instr(unsigned int esr, struct pt_regs *regs) > > asmlinkage void __exception do_sysinstr(unsigned int esr, struct pt_regs *regs) > { > - struct sys64_hook *hook; > + const struct sys64_hook *hook; > > for (hook = sys64_hooks; hook->handler; hook++) > if ((hook->esr_mask & esr) == hook->esr_val) { Reviewed-by: Dave Martin <Dave.Martin@arm.com> Cheers ---Dave _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-08-14 9:12 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-08-13 14:16 [PATCH 0/3] arm64: trivial constification patches Mark Rutland 2019-08-13 14:16 ` [PATCH 1/3] arm64: constify icache_policy_str[] Mark Rutland 2019-08-14 9:07 ` Dave Martin 2019-08-13 14:16 ` [PATCH 2/3] arm64: constify aarch64_insn_encoding_class[] Mark Rutland 2019-08-14 9:10 ` Dave Martin 2019-08-13 14:16 ` [PATCH 3/3] arm64: constify sys64_hook instances Mark Rutland 2019-08-14 9:12 ` Dave Martin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).