• Ondrej Jirman's avatar
    drm/sun4i: tcon top: Fix NULL/invalid pointer dereference in sun8i_tcon_top_un/bind · 1a07a94b
    Ondrej Jirman authored
    There are two problems here:
    
    1. Not all clk_data->hws[] need to be initialized, depending on various
       configured quirks. This leads to NULL ptr deref in
       clk_hw_unregister_gate() in sun8i_tcon_top_unbind()
    2. If there is error when registering the clk_data->hws[],
       err_unregister_gates error path will try to unregister
       IS_ERR()=true (invalid) pointer.
    
    For problem (1) I have this stack trace:
    
    Unable to handle kernel NULL pointer dereference at virtual
      address 0000000000000008
    Call trace:
     clk_hw_unregister+0x8/0x18
     clk_hw_unregister_gate+0x14/0x28
     sun8i_tcon_top_unbind+0x2c/0x60
     component_unbind.isra.4+0x2c/0x50
     component_bind_all+0x1d4/0x230
     sun4i_drv_bind+0xc4/0x1a0
     try_to_bring_up_master+0x164/0x1c0
     __component_add+0xa0/0x168
     component_add+0x10/0x18
     sun8i_dw_hdmi_probe+0x18/0x20
     platform_drv_probe+0x3c/0x70
     really_probe+0xcc/0x278
     driver_probe_device+0x34/0xa8
    
    Problem (2) was identified by head scratching.
    Signed-off-by: default avatarOndrej Jirman <megous@megous.com>
    Signed-off-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190405233048.3823-1-megous@megous.com
    1a07a94b
sun8i_tcon_top.c 7.79 KB