[Skiboot] [PATCH 1/8] interrupts: add_opal_interrupts avoid NULL dereference on P10 mambo

Cédric Le Goater clg at kaod.org
Tue Oct 5 03:41:20 AEDT 2021


On 10/3/21 03:22, Nicholas Piggin wrote:
> On P10, get_ics_phandle() calls xive2_get_phandle() directly. This
> results in a NULL dereference on mambo when xive2 is not set up.

Indeed. Sorry about that. I tend to prefer having devices !


Reviewed-by: Cédric Le Goater <clg at kaod.org>

Thanks,

C.

> 
> This was caught with the virtual memory boot patch on P10 mambo.
> 
> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
> ---
>   core/interrupts.c | 7 ++++++-
>   hw/xive2.c        | 3 +++
>   2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/core/interrupts.c b/core/interrupts.c
> index 5d2d04db5..c39c2801c 100644
> --- a/core/interrupts.c
> +++ b/core/interrupts.c
> @@ -204,10 +204,15 @@ void add_opal_interrupts(void)
>   {
>   	struct irq_source *is;
>   	unsigned int i, ns, tns = 0, count = 0;
> +	uint32_t parent;
>   	uint32_t isn;
>   	__be32 *irqs = NULL;
>   	char *names = NULL;
>   
> +	parent = get_ics_phandle();
> +	if (!parent)
> +		return;
> +
>   	lock(&irq_lock);
>   	list_for_each(&irq_sources, is, link) {
>   		/*
> @@ -251,7 +256,7 @@ void add_opal_interrupts(void)
>   	/* First create the standard "interrupts" property and the
>   	 * corresponding names property
>   	 */
> -	dt_add_property_cells(opal_node, "interrupt-parent", get_ics_phandle());
> +	dt_add_property_cells(opal_node, "interrupt-parent", parent);
>   	dt_add_property(opal_node, "interrupts", irqs, count * 8);
>   	dt_add_property(opal_node, "opal-interrupts-names", names, tns);
>   	dt_add_property(opal_node, "interrupt-names", names, tns);
> diff --git a/hw/xive2.c b/hw/xive2.c
> index 810ab91d8..0254175a9 100644
> --- a/hw/xive2.c
> +++ b/hw/xive2.c
> @@ -1977,6 +1977,9 @@ static void xive_create_mmio_dt_node(struct xive *x)
>   
>   uint32_t xive2_get_phandle(void)
>   {
> +	if (!xive_dt_node)
> +		return 0;
> +
>   	return xive_dt_node->phandle;
>   }
>   
> 



More information about the Skiboot mailing list