• Michael Ellerman's avatar
    powerpc/pci: Fix endian bug in fixed PHB numbering · 61e8a0d5
    Michael Ellerman authored
    The recent commit 63a72284 ("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: 63a72284 ("powerpc/pci: Assign fixed PHB number based on device-tree properties")
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    61e8a0d5
pci-common.c 46.9 KB