2022-05-14 00:39:35

by Sami Tolvanen

[permalink] [raw]
Subject: [RFC PATCH v2 08/21] psci: Fix the function type for psci_initcall_t

Functions called through a psci_initcall_t pointer all have
non-const arguments. Fix the type definition to avoid tripping
indirect call checks with CFI_CLANG.

Reported-by: Mark Rutland <[email protected]>
Signed-off-by: Sami Tolvanen <[email protected]>
---
drivers/firmware/psci/psci.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c
index cfb448eabdaa..6554bf4b8c99 100644
--- a/drivers/firmware/psci/psci.c
+++ b/drivers/firmware/psci/psci.c
@@ -521,7 +521,7 @@ static int __init psci_probe(void)
return 0;
}

-typedef int (*psci_initcall_t)(const struct device_node *);
+typedef int (*psci_initcall_t)(struct device_node *);

/*
* PSCI init function for PSCI versions >=0.2
--
2.36.0.550.gb090851708-goog



2022-05-16 06:33:42

by Kees Cook

[permalink] [raw]
Subject: Re: [RFC PATCH v2 08/21] psci: Fix the function type for psci_initcall_t

On Fri, May 13, 2022 at 01:21:46PM -0700, Sami Tolvanen wrote:
> Functions called through a psci_initcall_t pointer all have
> non-const arguments. Fix the type definition to avoid tripping
> indirect call checks with CFI_CLANG.
>
> Reported-by: Mark Rutland <[email protected]>
> Signed-off-by: Sami Tolvanen <[email protected]>

This could land separately from this series, too, yes?

Reviewed-by: Kees Cook <[email protected]>

--
Kees Cook

2022-05-17 07:03:33

by Sami Tolvanen

[permalink] [raw]
Subject: Re: [RFC PATCH v2 08/21] psci: Fix the function type for psci_initcall_t

On Sat, May 14, 2022 at 2:50 PM Kees Cook <[email protected]> wrote:
>
> On Fri, May 13, 2022 at 01:21:46PM -0700, Sami Tolvanen wrote:
> > Functions called through a psci_initcall_t pointer all have
> > non-const arguments. Fix the type definition to avoid tripping
> > indirect call checks with CFI_CLANG.
> >
> > Reported-by: Mark Rutland <[email protected]>
> > Signed-off-by: Sami Tolvanen <[email protected]>
>
> This could land separately from this series, too, yes?

Correct.

Sami

2022-05-17 14:54:53

by Mark Rutland

[permalink] [raw]
Subject: Re: [RFC PATCH v2 08/21] psci: Fix the function type for psci_initcall_t

On Fri, May 13, 2022 at 01:21:46PM -0700, Sami Tolvanen wrote:
> Functions called through a psci_initcall_t pointer all have
> non-const arguments. Fix the type definition to avoid tripping
> indirect call checks with CFI_CLANG.
>
> Reported-by: Mark Rutland <[email protected]>
> Signed-off-by: Sami Tolvanen <[email protected]>

I'd prefer that we spread the `const` to each of the implementations rather
than dropping it from the type.

I have a local patch for that I can send out shortly.

Thanks,
Mark.

> ---
> drivers/firmware/psci/psci.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c
> index cfb448eabdaa..6554bf4b8c99 100644
> --- a/drivers/firmware/psci/psci.c
> +++ b/drivers/firmware/psci/psci.c
> @@ -521,7 +521,7 @@ static int __init psci_probe(void)
> return 0;
> }
>
> -typedef int (*psci_initcall_t)(const struct device_node *);
> +typedef int (*psci_initcall_t)(struct device_node *);
>
> /*
> * PSCI init function for PSCI versions >=0.2
> --
> 2.36.0.550.gb090851708-goog
>