From f658b8110213148aa268092a528127462a7b6056 Mon Sep 17 00:00:00 2001 From: Huang Jiachai Date: Fri, 11 Nov 2016 18:36:47 +0800 Subject: [PATCH] video: rockchip: fb: fix inconsistent returns 'mutex:&dev_drv->front_lock' Change-Id: If937a6cbc6d89ff0b4dbd2f540a87da1af3c4123 Signed-off-by: Huang Jiachai --- drivers/video/rockchip/rkfb_sysfs.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/video/rockchip/rkfb_sysfs.c b/drivers/video/rockchip/rkfb_sysfs.c index 4cfc84ee36cb..81a1b759d803 100644 --- a/drivers/video/rockchip/rkfb_sysfs.c +++ b/drivers/video/rockchip/rkfb_sysfs.c @@ -431,17 +431,14 @@ static ssize_t set_dump_buffer(struct device *dev, return PTR_ERR(dentry); } + mutex_lock(&dev_drv->front_lock); if (!num_frames) { - mutex_lock(&dev_drv->front_lock); - if (!dev_drv->front_regs) { u16 xact, yact; int data_format; u32 dsp_addr; int ymirror; - mutex_unlock(&dev_drv->front_lock); - if (dev_drv->ops->get_dspbuf_info) dev_drv->ops->get_dspbuf_info(dev_drv, &xact, &yact, &data_format, &dsp_addr, @@ -452,8 +449,10 @@ static ssize_t set_dump_buffer(struct device *dev, goto out; } front_regs = kmalloc(sizeof(*front_regs), GFP_KERNEL); - if (!front_regs) + if (!front_regs) { + mutex_unlock(&dev_drv->front_lock); return -ENOMEM; + } memcpy(front_regs, dev_drv->front_regs, sizeof(*front_regs)); for (i = 0; i < front_regs->win_num; i++) { @@ -491,8 +490,6 @@ static ssize_t set_dump_buffer(struct device *dev, } kfree(front_regs); - - mutex_unlock(&dev_drv->front_lock); } else { trace->num_frames = num_frames; trace->count_frame = 0; @@ -502,7 +499,7 @@ static ssize_t set_dump_buffer(struct device *dev, trace->mask_area = mask_area; } out: - + mutex_unlock(&dev_drv->front_lock); return count; } -- 2.34.1