mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 22:52:35 +02:00
HDMI: add mutex lock to edid modelist operation.
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
This commit is contained in:
parent
1fb8cff52e
commit
d6f81d1133
|
|
@ -114,10 +114,14 @@ static ssize_t display_show_modes(struct device *dev,
|
|||
const struct fb_videomode *mode;
|
||||
int i;
|
||||
|
||||
mutex_lock(&dsp->lock);
|
||||
if (dsp->ops && dsp->ops->getmodelist) {
|
||||
if (dsp->ops->getmodelist(dsp, &modelist))
|
||||
if (dsp->ops->getmodelist(dsp, &modelist)) {
|
||||
mutex_unlock(&dsp->lock);
|
||||
return -EINVAL;
|
||||
}
|
||||
} else {
|
||||
mutex_unlock(&dsp->lock);
|
||||
return 0;
|
||||
}
|
||||
i = 0;
|
||||
|
|
@ -131,6 +135,7 @@ static ssize_t display_show_modes(struct device *dev,
|
|||
mode = &display_modelist->mode;
|
||||
i += mode_string(buf, i, mode);
|
||||
}
|
||||
mutex_unlock(&dsp->lock);
|
||||
return i;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -253,10 +253,12 @@ static void hdmi_wq_remove(struct hdmi *hdmi)
|
|||
#ifdef CONFIG_SWITCH
|
||||
switch_set_state(&(hdmi->switchdev), 0);
|
||||
#endif
|
||||
mutex_lock(&hdmi->ddev->lock);
|
||||
list_for_each_safe(pos, n, &hdmi->edid.modelist) {
|
||||
list_del(pos);
|
||||
kfree(pos);
|
||||
}
|
||||
mutex_unlock(&hdmi->ddev->lock);
|
||||
for (i = 0; i < HDMI_MAX_EDID_BLOCK; i++)
|
||||
kfree(hdmi->edid.raw[i]);
|
||||
kfree(hdmi->edid.audio);
|
||||
|
|
|
|||
|
|
@ -39,9 +39,7 @@ static int hdmi_get_modelist(struct rk_display_device *device,
|
|||
{
|
||||
struct hdmi *hdmi = device->priv_data;
|
||||
|
||||
mutex_lock(&hdmi->lock);
|
||||
*modelist = &hdmi->edid.modelist;
|
||||
mutex_unlock(&hdmi->lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user