powerpc/pci: Fix endian bug in fixed PHB numbering

Michael Ellerman patch-notifications at ellerman.id.au
Tue Aug 9 21:26:38 AEST 2016


On Tue, 2016-09-08 at 06:55:41 UTC, Michael Ellerman wrote:
> The recent commit 63a72284b159 ("powerpc/pci: Assign fixed PHB number
> based on device-tree properties"), added code to read a 64-bit property
> from the device tree, and if not found read a 32-bit property (reg).
> 
> There was a bug in the 32-bit case, on big endian machines, due to the
> use of the 64-bit value to read the 32-bit property. The cast of &prop
> means we end up writing to the high 32-bit of prop, leaving the low
> 32-bits containing whatever junk was on the stack.
> 
> If that junk value was non-zero, and < MAX_PHBS, we would end up using
> it as the PHB id. This results in users seeing what appear to be random
> PHB ids.
> 
> Fix it by reading into a u32 property and then assigning that to the
> u64 value, letting the CPU do the correct conversions for us.
> 
> Fixes: 63a72284b159 ("powerpc/pci: Assign fixed PHB number based on device-tree properties")
> Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>

Applied to powerpc fixes.

https://git.kernel.org/powerpc/c/61e8a0d5a0270b91581f6c7150

cheers


More information about the Linuxppc-dev mailing list