Hello Daniel Jeong,
The patch 7f6b11a18c30: "[media] media: i2c: add driver for dual LED
Flash, lm3560" from Oct 16, 2013, leads to the following
static checker warning: "drivers/media/i2c/lm3560.c:196
lm3560_get_ctrl()
warn: inconsistent returns mutex:&flash->lock: locked (184
[s32min-(-1)], 192 [0]) unlocked (196 [(-22)])"
drivers/media/i2c/lm3560.c
171 /* V4L2 controls */
172 static int lm3560_get_ctrl(struct v4l2_ctrl *ctrl, enum lm3560_led_id
led_no)
173 {
174 struct lm3560_flash *flash = to_lm3560_flash(ctrl, led_no);
175
176 mutex_lock(&flash->lock);
177
178 if (ctrl->id == V4L2_CID_FLASH_FAULT) {
179 int rval;
180 s32 fault = 0;
181 unsigned int reg_val;
182 rval = regmap_read(flash->regmap, REG_FLAG, ®_val);
183 if (rval < 0)
184 return rval;
Some negative returns mean we are holding the lock.
185 if (rval & FAULT_SHORT_CIRCUIT)
186 fault |= V4L2_FLASH_FAULT_SHORT_CIRCUIT;
187 if (rval & FAULT_OVERTEMP)
188 fault |= V4L2_FLASH_FAULT_OVER_TEMPERATURE;
189 if (rval & FAULT_TIMEOUT)
190 fault |= V4L2_FLASH_FAULT_TIMEOUT;
191 ctrl->cur.val = fault;
192 return 0;
Positive means we are holding the lock.
193 }
194
195 mutex_unlock(&flash->lock);
196 return -EINVAL;
Some mean we unlocked.
197 }
I also worry that this might be a double lock deadlock because the
caller already holds the lock in get_ctrl(), but I don't know the code
very well.
regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html