Message ID | 20210401002651.1da9087e@xhacker (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | riscv: improve self-protection | expand |
On Wed, Mar 31, 2021 at 10:02 PM Jisheng Zhang <jszhang3@mail.ustc.edu.cn> wrote: > > From: Jisheng Zhang <jszhang@kernel.org> > > Constify the sbi_ipi_ops so that it will be placed in the .rodata > section. This will cause attempts to modify it to fail when strict > page permissions are in place. > > Signed-off-by: Jisheng Zhang <jszhang@kernel.org> Looks good to me. Reviewed-by: Anup Patel <anup@brainfault.org> Regards, Anup > --- > arch/riscv/include/asm/smp.h | 4 ++-- > arch/riscv/kernel/sbi.c | 2 +- > arch/riscv/kernel/smp.c | 4 ++-- > 3 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/arch/riscv/include/asm/smp.h b/arch/riscv/include/asm/smp.h > index df1f7c4cd433..a7d2811f3536 100644 > --- a/arch/riscv/include/asm/smp.h > +++ b/arch/riscv/include/asm/smp.h > @@ -46,7 +46,7 @@ int riscv_hartid_to_cpuid(int hartid); > void riscv_cpuid_to_hartid_mask(const struct cpumask *in, struct cpumask *out); > > /* Set custom IPI operations */ > -void riscv_set_ipi_ops(struct riscv_ipi_ops *ops); > +void riscv_set_ipi_ops(const struct riscv_ipi_ops *ops); > > /* Clear IPI for current CPU */ > void riscv_clear_ipi(void); > @@ -92,7 +92,7 @@ static inline void riscv_cpuid_to_hartid_mask(const struct cpumask *in, > cpumask_set_cpu(boot_cpu_hartid, out); > } > > -static inline void riscv_set_ipi_ops(struct riscv_ipi_ops *ops) > +static inline void riscv_set_ipi_ops(const struct riscv_ipi_ops *ops) > { > } > > diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c > index cbd94a72eaa7..cb848e80865e 100644 > --- a/arch/riscv/kernel/sbi.c > +++ b/arch/riscv/kernel/sbi.c > @@ -556,7 +556,7 @@ static void sbi_send_cpumask_ipi(const struct cpumask *target) > sbi_send_ipi(cpumask_bits(&hartid_mask)); > } > > -static struct riscv_ipi_ops sbi_ipi_ops = { > +static const struct riscv_ipi_ops sbi_ipi_ops = { > .ipi_inject = sbi_send_cpumask_ipi > }; > > diff --git a/arch/riscv/kernel/smp.c b/arch/riscv/kernel/smp.c > index 504284d49135..e035124f06dc 100644 > --- a/arch/riscv/kernel/smp.c > +++ b/arch/riscv/kernel/smp.c > @@ -85,9 +85,9 @@ static void ipi_stop(void) > wait_for_interrupt(); > } > > -static struct riscv_ipi_ops *ipi_ops __ro_after_init; > +static const struct riscv_ipi_ops *ipi_ops __ro_after_init; > > -void riscv_set_ipi_ops(struct riscv_ipi_ops *ops) > +void riscv_set_ipi_ops(const struct riscv_ipi_ops *ops) > { > ipi_ops = ops; > } > -- > 2.31.0 > > > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
diff --git a/arch/riscv/include/asm/smp.h b/arch/riscv/include/asm/smp.h index df1f7c4cd433..a7d2811f3536 100644 --- a/arch/riscv/include/asm/smp.h +++ b/arch/riscv/include/asm/smp.h @@ -46,7 +46,7 @@ int riscv_hartid_to_cpuid(int hartid); void riscv_cpuid_to_hartid_mask(const struct cpumask *in, struct cpumask *out); /* Set custom IPI operations */ -void riscv_set_ipi_ops(struct riscv_ipi_ops *ops); +void riscv_set_ipi_ops(const struct riscv_ipi_ops *ops); /* Clear IPI for current CPU */ void riscv_clear_ipi(void); @@ -92,7 +92,7 @@ static inline void riscv_cpuid_to_hartid_mask(const struct cpumask *in, cpumask_set_cpu(boot_cpu_hartid, out); } -static inline void riscv_set_ipi_ops(struct riscv_ipi_ops *ops) +static inline void riscv_set_ipi_ops(const struct riscv_ipi_ops *ops) { } diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c index cbd94a72eaa7..cb848e80865e 100644 --- a/arch/riscv/kernel/sbi.c +++ b/arch/riscv/kernel/sbi.c @@ -556,7 +556,7 @@ static void sbi_send_cpumask_ipi(const struct cpumask *target) sbi_send_ipi(cpumask_bits(&hartid_mask)); } -static struct riscv_ipi_ops sbi_ipi_ops = { +static const struct riscv_ipi_ops sbi_ipi_ops = { .ipi_inject = sbi_send_cpumask_ipi }; diff --git a/arch/riscv/kernel/smp.c b/arch/riscv/kernel/smp.c index 504284d49135..e035124f06dc 100644 --- a/arch/riscv/kernel/smp.c +++ b/arch/riscv/kernel/smp.c @@ -85,9 +85,9 @@ static void ipi_stop(void) wait_for_interrupt(); } -static struct riscv_ipi_ops *ipi_ops __ro_after_init; +static const struct riscv_ipi_ops *ipi_ops __ro_after_init; -void riscv_set_ipi_ops(struct riscv_ipi_ops *ops) +void riscv_set_ipi_ops(const struct riscv_ipi_ops *ops) { ipi_ops = ops; }