Jiri Slaby wrote:
# HG changeset patch # User Jiri Slaby jirislaby@gmail.com # Date 1191671579 -7200 # Node ID 9a1cfea77fed371494e8d3f7325f3f51a1c795f5 # Parent 3d81ec3f07e5b08a85add9e2319d7d5a2ba2895d v4l2_extension: fix helper daemon open/release locking
if (helper_daemon == 1) was racy, put it in critical section
Signed-off-by: Jiri Slaby jirislaby@gmail.com
diff --git a/linux/drivers/media/video/v4l2_extension/v4l2_extension-hlp.c b/linux/drivers/media/video/v4l2_extension/v4l2_extension-hlp.c --- a/linux/drivers/media/video/v4l2_extension/v4l2_extension-hlp.c +++ b/linux/drivers/media/video/v4l2_extension/v4l2_extension-hlp.c @@ -25,7 +25,7 @@
/* helper_daemon states if the helper daemon has opened the driver */ static unsigned int helper_daemon; -static struct mutex helper_daemon_lock; +static DEFINE_MUTEX(helper_daemon_lock);
/* device management stuff */ static struct class *helper_class; @@ -62,14 +62,17 @@ static int v4l2ext_hlp_open(struct inode { struct helperd *dev;
- if (mutex_lock_interruptible(&helper_daemon_lock))
if (helper_daemon == 1) {return -ERESTARTSYS;
return -EBUSY;mutex_unlock(&helper_daemon_lock);
- } else {
mutex_lock(&helper_daemon_lock);
/* Helper daemon is here */
helper_daemon = 1;
}mutex_unlock(&helper_daemon_lock);
- /* Helper daemon is here */
- helper_daemon = 1;
- mutex_unlock(&helper_daemon_lock);
- /* allocate and initialize device private data structure */ dev = kzalloc(sizeof(*dev), GFP_KERNEL); if (dev == NULL) {
@@ -125,8 +128,6 @@ int v4l2ext_hlp_init(void) MKDEV(helper_major, 0), NULL, HELPER_IF_NAME);
- mutex_init(&helper_daemon_lock);
- return 0;
}
Patch committed at http://linuxtv.org/hg/~tmerle/v4l2_extension/
Thierry