All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] EM28xx - replug locking cleanup
@ 2011-09-25 22:43 Chris Rankin
  0 siblings, 0 replies; only message in thread
From: Chris Rankin @ 2011-09-25 22:43 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: linux-media

[-- Attachment #1: Type: text/plain, Size: 678 bytes --]

Mauro,

This patch simplifies the locking by moving the em28xx_init_extension() call 
until em28xx_usb_probe() has finished with the dev->lock mutex. It therefore 
makes the second and subsequent "plugging" events logically identical to the 
first "plugging" event when the em28xx-dvb and em28xx-alsa modules must be 
loaded (i.e. registered).

Basically, em28xx_usb_probe() requests that em28xx-dvb be loaded and also 
triggers udev to initialise the V4L2 devices. These two events are serialised by 
the dev->lock mutex but the order that they happen in is undefined. But this has 
always been the case anyway.

Signed-off-by: Chris Rankin <rankincj@yahoo.com>

Cheers,
Chris

[-- Attachment #2: EM28xx-replug-deadlock-cleanup.diff --]
[-- Type: text/x-patch, Size: 729 bytes --]

--- linux/drivers/media/video/em28xx/em28xx-cards.c.orig	2011-09-25 22:51:59.000000000 +0100
+++ linux/drivers/media/video/em28xx/em28xx-cards.c	2011-09-25 23:24:06.000000000 +0100
@@ -3005,10 +3005,6 @@
 		goto fail;
 	}
 
-	mutex_unlock(&dev->lock);
-	em28xx_init_extension(dev);
-	mutex_lock(&dev->lock);
-
 	/* Save some power by putting tuner to sleep */
 	v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_power, 0);
 
@@ -3243,6 +3239,13 @@
 	 */
 	mutex_unlock(&dev->lock);
 
+	/*
+	 * These extensions can be modules. If the modules are already
+	 * loaded then we can initialise the device now, otherwise we
+	 * will initialise it when the modules load instead.
+	 */
+	em28xx_init_extension(dev);
+
 	return 0;
 
 err:

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2011-09-25 22:43 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-25 22:43 [PATCH] EM28xx - replug locking cleanup Chris Rankin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.