[media] media: i2c: lm3560: fix missing unlock on error, fault handling
authorDaniel Jeong <gshark.jeong@gmail.com>
Fri, 6 Dec 2013 05:43:27 +0000 (02:43 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Mon, 9 Dec 2013 12:22:55 +0000 (10:22 -0200)
Correct reference of reading values. (rval -> reg_val)
Add the missing unlock before return from function lm3560_get_ctrl()
to avoid deadlock.
Thank you Dan Carpenter & Sakari.

Signed-off-by: Daniel Jeong <gshark.jeong@gmail.com>
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/i2c/lm3560.c

index 3317a9ae3961fcf11dcf4cd97254654af608e1d5..ab5857d66f2d8f58e5a708bdfc01f28746c0e069 100644 (file)
@@ -172,28 +172,28 @@ static int lm3560_flash_brt_ctrl(struct lm3560_flash *flash,
 static int lm3560_get_ctrl(struct v4l2_ctrl *ctrl, enum lm3560_led_id led_no)
 {
        struct lm3560_flash *flash = to_lm3560_flash(ctrl, led_no);
+       int rval = -EINVAL;
 
        mutex_lock(&flash->lock);
 
        if (ctrl->id == V4L2_CID_FLASH_FAULT) {
-               int rval;
                s32 fault = 0;
                unsigned int reg_val;
                rval = regmap_read(flash->regmap, REG_FLAG, &reg_val);
                if (rval < 0)
-                       return rval;
-               if (rval & FAULT_SHORT_CIRCUIT)
+                       goto out;
+               if (reg_val & FAULT_SHORT_CIRCUIT)
                        fault |= V4L2_FLASH_FAULT_SHORT_CIRCUIT;
-               if (rval & FAULT_OVERTEMP)
+               if (reg_val & FAULT_OVERTEMP)
                        fault |= V4L2_FLASH_FAULT_OVER_TEMPERATURE;
-               if (rval & FAULT_TIMEOUT)
+               if (reg_val & FAULT_TIMEOUT)
                        fault |= V4L2_FLASH_FAULT_TIMEOUT;
                ctrl->cur.val = fault;
-               return 0;
        }
 
+out:
        mutex_unlock(&flash->lock);
-       return -EINVAL;
+       return rval;
 }
 
 static int lm3560_set_ctrl(struct v4l2_ctrl *ctrl, enum lm3560_led_id led_no)
This page took 0.028918 seconds and 5 git commands to generate.