• Nishanth Menon's avatar
    ARM: OMAP2+: hwmod: Fix usage of invalid iclk / oclk when clock node is not present · 0e7dc862
    Nishanth Menon authored
    commit dc75925d(OMAP: hwmod: Fix the missing braces) introduced
    missing braces, however, we just set return result if clk_get fail
    and we populate the error pointer in clk pointer and pass it along to
    clk_prepare. This is wrong. The intent seems to be retry remaining
    clocks if they are available and warn the ones we cant find clks for.
    
    With the current logic, we see the following crash:
    omap_hwmod: l3_main: cannot clk_get interface_clk emac_ick
    Unable to handle kernel NULL pointer dereference at virtual address 00000032
    pgd = c0004000
    [00000032] *pgd=00000000
    Internal error: Oops: 5 [#1] SMP ARM
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.13.0-rc1-00044-gcc9fd5a-dirty #19
    task: ce0c3440 ti: ce0c4000 task.ti: ce0c4000
    PC is at __clk_prepare+0x10/0x74
    LR is at clk_prepare+0x14/0x24
      <snip>
    [<c044d59c>] (__clk_prepare+0x10/0x74) from [<c044d9b0>] (clk_prepare+0x14/0x24)
    [<c044d9b0>] (clk_prepare+0x14/0x24) from [<c077d8c4>] (_init+0x24c/0x3bc)
    [<c077d8c4>] (_init+0x24c/0x3bc) from [<c0027328>] (omap_hwmod_for_each+0x34/0x5c)
    [<c0027328>] (omap_hwmod_for_each+0x34/0x5c) from [<c077dfa0>] (__omap_hwmod_setup_all+0x24/0x40)
    [<c077dfa0>] (__omap_hwmod_setup_all+0x24/0x40) from [<c0008928>] (do_one_initcall+0x38/0x168)
    [<c0008928>] (do_one_initcall+0x38/0x168) from [<c0771be8>] (kernel_init_freeable+0xfc/0x1cc)
    [<c0771be8>] (kernel_init_freeable+0xfc/0x1cc) from [<c0521064>] (kernel_init+0x8/0x110)
    [<c0521064>] (kernel_init+0x8/0x110) from [<c000e568>] (ret_from_fork+0x14/0x2c)
    Code: e92d4038 e2504000 01a05004 0a000005 (e5943034)
    
    So, just warn and continue instead of proceeding and crashing, with
    missing clock nodes/bad data, we will eventually fail, however we
    should now have enough information to identify the culprit.
    Signed-off-by: default avatarNishanth Menon <nm@ti.com>
    Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
    0e7dc862
omap_hwmod.c 120 KB