[PATCH] powerpc/mm: Prevent unlikely crash in copro_calculate_slb()

Frederic Barrat fbarrat at linux.vnet.ibm.com
Thu Oct 13 01:14:35 AEDT 2016


ping? The patch still applies cleanly on recent trees.

   Fred

Le 17/06/2016 à 18:53, Frederic Barrat a écrit :
> If a cxl adapter faults on an invalid address for a kernel context, we
> may enter copro_calculate_slb() with a NULL mm pointer (kernel
> context) and an effective address which looks like a user
> address. Which will cause a crash when dereferencing mm. It is clearly
> an AFU bug, but there's no reason to crash either. So return an error,
> so that cxl can ack the interrupt with an address error.
>
> Signed-off-by: Frederic Barrat <fbarrat at linux.vnet.ibm.com>
> Cc: <stable at vger.kernel.org>
> ---
>  arch/powerpc/mm/copro_fault.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/arch/powerpc/mm/copro_fault.c b/arch/powerpc/mm/copro_fault.c
> index 6527882..ddfd274 100644
> --- a/arch/powerpc/mm/copro_fault.c
> +++ b/arch/powerpc/mm/copro_fault.c
> @@ -106,6 +106,8 @@ int copro_calculate_slb(struct mm_struct *mm, u64 ea, struct copro_slb *slb)
>  	switch (REGION_ID(ea)) {
>  	case USER_REGION_ID:
>  		pr_devel("%s: 0x%llx -- USER_REGION_ID\n", __func__, ea);
> +		if (mm == NULL)
> +			return 1;
>  		psize = get_slice_psize(mm, ea);
>  		ssize = user_segment_size(ea);
>  		vsid = get_vsid(mm->context.id, ea, ssize);
>



More information about the Linuxppc-dev mailing list