Re: [Linux PPC] 7.0-rc1: e500_mmu.c:923:26: error: assignment to 'struct tlbe_priv *' from incompatible pointer type 'struct tlbe_ref *'

Kees Cook
2026-02-23T22:40:51Z

On Mon, Feb 23, 2026 at 08:38:29PM +0100, Christophe Leroy (CS GROUP) wrote:
>
>
> Le 23/02/2026 à 19:07, Christophe Leroy (CS GROUP) a écrit :
> > +Kees
> >
> > Hello,
> >
> > Le 23/02/2026 à 17:48, Christian Zigotzky a écrit :
> > > Hello,
> > >
> > > Compiling issue for e5500 machines for the RC1 of kernel 7.0:
> > >
> > > arch/powerpc/kvm/e500_mmu.c: In function 'kvmppc_e500_tlb_init':
> > > arch/powerpc/kvm/e500_mmu.c:923:26: error: assignment to 'struct
> > > tlbe_priv *' from incompatible pointer type 'struct tlbe_ref *' [-
> > > Werror=incompatible-pointer-types]
> > >    923 |  vcpu_e500->gtlb_priv[0] = kzalloc_objs(struct tlbe_ref,
> > >        |                          ^
> > > arch/powerpc/kvm/e500_mmu.c:928:26: error: assignment to 'struct
> > > tlbe_priv *' from incompatible pointer type 'struct tlbe_ref *' [-
> > > Werror=incompatible-pointer-types]
> > >    928 |  vcpu_e500->gtlb_priv[1] = kzalloc_objs(struct tlbe_ref,
> > >
> > > Temporary solution: # CONFIG_VIRTUALIZATION is not set
> > >
> > > Please solve this issue.
> > >
> >
> > Must be one of:
> >
> > 189f164e573e Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses
> > bf4afc53b77a Convert 'alloc_obj' family to use the new default
> > GFP_KERNEL argument
> > 69050f8d6d07 treewide: Replace kmalloc with kmalloc_obj for non-scalar
> > types
> >
>
> Can you try following change:
>
> diff --git a/arch/powerpc/kvm/e500_mmu.c b/arch/powerpc/kvm/e500_mmu.c
> index 48580c85f23b..75ed1496ead5 100644
> --- a/arch/powerpc/kvm/e500_mmu.c
> +++ b/arch/powerpc/kvm/e500_mmu.c
> @@ -920,12 +920,12 @@ int kvmppc_e500_tlb_init(struct kvmppc_vcpu_e500
> *vcpu_e500)
> vcpu_e500->gtlb_offset[0] = 0;
> vcpu_e500->gtlb_offset[1] = KVM_E500_TLB0_SIZE;
>
> - vcpu_e500->gtlb_priv[0] = kzalloc_objs(struct tlbe_ref,
> + vcpu_e500->gtlb_priv[0] = kzalloc_objs(struct tlbe_priv,
> vcpu_e500->gtlb_params[0].entries);
> if (!vcpu_e500->gtlb_priv[0])
> goto free_vcpu;
>
> - vcpu_e500->gtlb_priv[1] = kzalloc_objs(struct tlbe_ref,
> + vcpu_e500->gtlb_priv[1] = kzalloc_objs(struct tlbe_priv,
> vcpu_e500->gtlb_params[1].entries);
> if (!vcpu_e500->gtlb_priv[1])
> goto free_vcpu;

That looks like the correct fix to me. The old type was the correct size,
but was just the wrong type. Sorry I missed it when doing my tree-wide
multi-arch builds! What build target (or Kconfig) was needed to reach
this code?

Fixes: 69050f8d6d07 ("treewide: Replace kmalloc with kmalloc_obj for non-scalar types")
Reviewed-by: Kees Cook <kees@kernel.org>

Thanks!

--
Kees Cook