HDMI: add mutex lock when hdmi is set to auto mode, to avoid
authorZheng Yang <zhengyang@rock-chips.com>
Mon, 9 Mar 2015 03:07:28 +0000 (11:07 +0800)
committerZheng Yang <zhengyang@rock-chips.com>
Mon, 9 Mar 2015 03:07:28 +0000 (11:07 +0800)
      system crash by NULL pointer.

Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
drivers/video/rockchip/hdmi/rockchip-hdmi-core.c
drivers/video/rockchip/hdmi/rockchip-hdmi-sysfs.c

index 3ddcc307d3d810f51f66a9ccd045113837e40d60..a598ad5aad6634cf287179ff440ed55f11ee5e9d 100644 (file)
@@ -210,7 +210,7 @@ static void hdmi_wq_insert(struct hdmi *hdmi)
                rockchip_hdmi_cec_set_pa(hdmi->edid.cecaddress);
        hdmi_send_uevent(hdmi, KOBJ_ADD);
        if (hdmi->enable) {
-               hdmi->autoset = 0;
+               /*hdmi->autoset = 0;*/
                hdmi_set_lcdc(hdmi);
                hdmi_wq_set_video(hdmi);
                #ifdef CONFIG_SWITCH
index 134e8888acd9074dc3dcc1eec7a865c01d54667b..7d1b8e4370ac44394c96edd499e5757f5a5b3765 100644 (file)
@@ -53,6 +53,7 @@ static int hdmi_set_mode(struct rk_display_device *device,
                        container_of(mode, struct display_modelist, mode);
        int vic = 0;
 
+       mutex_lock(&hdmi->lock);
        if (mode == NULL) {
                hdmi->autoset = 1;
                vic = hdmi_find_best_mode(hdmi, 0);
@@ -66,6 +67,7 @@ static int hdmi_set_mode(struct rk_display_device *device,
                if (hdmi->hotplug == HDMI_HPD_ACTIVED)
                        hdmi_submit_work(hdmi, HDMI_SET_VIDEO, 0, NULL);
        }
+       mutex_unlock(&hdmi->lock);
        return 0;
 }