lkml.org 
[lkml]   [2007]   [Jun]   [29]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateFri, 29 Jun 2007 15:16:05 +0200
FromIngo Molnar <>
SubjectRe: 2.6.22-rc6 spurious hangs
* Oleg Nesterov <oleg@tv-sign.ru> wrote:

> Yes, I think cinergyt2 is buggy.

> cinergyt2_release() does flush_scheduled_work() under cinergyt2->sem. 
> flush_scheduled_work() hangs because cinergyt2_query_rc() waits for 
> the same cinergyt2->sem.
> 
> ->disconnect_pending is used without any locks/barriers, perhaps this 
> is the reason.
> 
> I'll try to look further tomorrow. In any case, cinergyT2 should not 
> use flush_scheduled_work() at all.

would the hack below be worth trying, to see whether there are any 
further problems?

	Ingo

Index: linux/drivers/media/dvb/cinergyT2/cinergyT2.c
===================================================================
--- linux.orig/drivers/media/dvb/cinergyT2/cinergyT2.c
+++ linux/drivers/media/dvb/cinergyT2/cinergyT2.c
@@ -523,7 +523,6 @@ static int cinergyt2_release (struct ino
 
 	if (!cinergyt2->disconnect_pending && (file->f_flags & O_ACCMODE) != O_RDONLY) {
 		cancel_delayed_work(&cinergyt2->query_work);
-		flush_scheduled_work();
 		cinergyt2_sleep(cinergyt2, 1);
 	}
 
@@ -974,8 +973,6 @@ static void cinergyt2_disconnect (struct
 {
 	struct cinergyt2 *cinergyt2 = usb_get_intfdata (intf);
 
-	flush_scheduled_work();
-
 	cinergyt2_unregister_rc(cinergyt2);
 
 	cancel_delayed_work(&cinergyt2->query_work);
@@ -1002,7 +999,6 @@ static int cinergyt2_suspend (struct usb
 		cancel_delayed_work(&cinergyt2->query_work);
 		if (cinergyt2->streaming)
 			cinergyt2_stop_stream_xfer(cinergyt2);
-		flush_scheduled_work();
 		cinergyt2_sleep(cinergyt2, 1);
 	}
 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2007-06-29 13:19    [from the cache]
©2003-2008