• Christian Lamparter's avatar
    net: ibm: emac: fix regression caused by emac_dt_phy_probe() · b793f081
    Christian Lamparter authored
    Julian Margetson reported a panic on his SAM460EX with Kernel 4.11-rc1:
    | Unable to handle kernel paging request for data at address 0x00000014
    | Oops: Kernel access of bad area, sig: 11 [#1]
    | PREEMPT
    | Canyonlands
    | Modules linked in:
    | CPU: 0 PID: 1 Comm: swapper Not tainted [...]
    | task: ea838000 task.stack: ea836000
    | NIP: c0599f5c LR: c0599dd8 CTR: 00000000
    | REGS: ea837c80 TRAP: 0300   Not tainted [...]
    | MSR: 00029000 <CE,EE,ME>
    |  CR: 24371242  XER: 20000000
    | DEAR: 00000014 ESR: 00000000
    | GPR00: c0599ce8 ea837d30 ea838000 c0e52dcc c0d56ffb [...]
    | NIP [c0599f5c] emac_probe+0xfb4/0x1304
    | LR [c0599dd8] emac_probe+0xe30/0x1304
    | Call Trace:
    | [ea837d30] [c0599ce8] emac_probe+0xd40/0x1304 (unreliable)
    | [ea837d80] [c0533504] platform_drv_probe+0x48/0x90
    | [ea837da0] [c0531c14] driver_probe_device+0x15c/0x2c4
    | [ea837dd0] [c0531e04] __driver_attach+0x88/0xb0
    | ---[ end trace ... ]---
    
    The problem is caused by emac_dt_phy_probe() returing success (0)
    for existing device-trees configurations that do not specify a
    "phy-handle" property. This caused the code to skip the existing
    phy probe and setup. Which led to essential phy related
    data-structures being uninitialized.
    
    This patch also removes the unused variable in emac_dt_phy_connect().
    
    Fixes: a577ca6b ("net: emac: add support for device-tree based PHY discovery and setup")
    Reported-by: default avatarJulian Margetson <runaway@candw.ms>
    Signed-off-by: default avatarChristian Lamparter <chunkeey@googlemail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b793f081
core.c 88.4 KB