From: Alexey Khoroshilov Date: Mon, 29 Aug 2011 17:46:57 +0000 (+0400) Subject: staging/easycap: fix mismatch in easycap_poll() mutex lock-unlock X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=22f88fcf407933321d08c45520fbeffca70b05d1;p=linux-beck.git staging/easycap: fix mismatch in easycap_poll() mutex lock-unlock In case if condition (kd != isdongle(peasycap)) becomes true, easycap_poll() returns without releasing easycapdc60_dongle[kd].mutex_video. The patch adds mutex_unlock() before that return. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov Acked-by: Tomas Winkler Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/easycap/easycap_main.c b/drivers/staging/easycap/easycap_main.c index bea281624c41..3ea51c373914 100644 --- a/drivers/staging/easycap/easycap_main.c +++ b/drivers/staging/easycap/easycap_main.c @@ -953,8 +953,10 @@ static unsigned int easycap_poll(struct file *file, poll_table *wait) * peasycap, IN WHICH CASE A REPEAT CALL TO isdongle() WILL FAIL. * IF NECESSARY, BAIL OUT. */ - if (kd != isdongle(peasycap)) + if (kd != isdongle(peasycap)) { + mutex_unlock(&easycapdc60_dongle[kd].mutex_video); return -ERESTARTSYS; + } if (!file) { SAY("ERROR: file is NULL\n"); mutex_unlock(&easycapdc60_dongle[kd].mutex_video);