• Anson Huang's avatar
    soc: imx8: Fix potential kernel dump in error path · 1bcbe730
    Anson Huang authored
    When SoC's revision value is 0, SoC driver will print out
    "unknown" in sysfs's revision node, this "unknown" is a
    static string which can NOT be freed, this will caused below
    kernel dump in later error path which calls kfree:
    
    kernel BUG at mm/slub.c:3942!
    Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
    Modules linked in:
    CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.2.0-rc4-next-20190611-00023-g705146c-dirty #2197
    Hardware name: NXP i.MX8MQ EVK (DT)
    pstate: 60000005 (nZCv daif -PAN -UAO)
    pc : kfree+0x170/0x1b0
    lr : imx8_soc_init+0xc0/0xe4
    sp : ffff00001003bd10
    x29: ffff00001003bd10 x28: ffff00001121e0a0
    x27: ffff000011482000 x26: ffff00001117068c
    x25: ffff00001121e100 x24: ffff000011482000
    x23: ffff000010fe2b58 x22: ffff0000111b9ab0
    x21: ffff8000bd9dfba0 x20: ffff0000111b9b70
    x19: ffff7e000043f880 x18: 0000000000001000
    x17: ffff000010d05fa0 x16: ffff0000122e0000
    x15: 0140000000000000 x14: 0000000030360000
    x13: ffff8000b94b5bb0 x12: 0000000000000038
    x11: ffffffffffffffff x10: ffffffffffffffff
    x9 : 0000000000000003 x8 : ffff8000b9488147
    x7 : ffff00001003bc00 x6 : 0000000000000000
    x5 : 0000000000000003 x4 : 0000000000000003
    x3 : 0000000000000003 x2 : b8793acd604edf00
    x1 : ffff7e000043f880 x0 : ffff7e000043f888
    Call trace:
     kfree+0x170/0x1b0
     imx8_soc_init+0xc0/0xe4
     do_one_initcall+0x58/0x1b8
     kernel_init_freeable+0x1cc/0x288
     kernel_init+0x10/0x100
     ret_from_fork+0x10/0x18
    
    This patch fixes this potential kernel dump when a chip's
    revision is "unknown", it is done by checking whether the
    revision space can be freed.
    
    Fixes: a7e26f35 ("soc: imx: Add generic i.MX8 SoC driver")
    Signed-off-by: default avatarAnson Huang <Anson.Huang@nxp.com>
    Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
    1bcbe730
soc-imx8.c 2.97 KB