diff mbox series

[v2,4/9] riscv: Constify sbi_ipi_ops

Message ID 20210401002651.1da9087e@xhacker
State New
Headers show
Series riscv: improve self-protection | expand

Commit Message

Jisheng Zhang March 31, 2021, 4:26 p.m. UTC
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>
---
 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(-)

Comments

Anup Patel April 2, 2021, 4:12 a.m. UTC | #1
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 mbox series

Patch

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;
 }