[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xenstore: Fix deadlock in xs_read_watch
On Thu, 26 Aug 2010, Daniel De Graaf wrote: > When read_message returns -1 while a read is pending, an attempt is made > to lock h->request_mutex which is already locked by the reader. Change > the read thread to only exit on thread cancellation, where > read_thr_exists will return 0. > > Signed-off-by: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx> > > diff -r 6bebaf40e925 tools/xenstore/xs.c > --- a/tools/xenstore/xs.c Tue Jul 20 13:42:17 2010 +0100 > +++ b/tools/xenstore/xs.c Thu Aug 26 17:08:55 2010 -0400 > @@ -271,6 +271,7 @@ > { > #ifdef USE_PTHREAD > if (h->read_thr_exists) { > + h->read_thr_exists = 0; > pthread_cancel(h->read_thr); > pthread_join(h->read_thr, NULL); > } > @@ -667,7 +668,7 @@ > mutex_lock(&h->watch_mutex); > > /* Wait on the condition variable for a watch to fire. */ > - while (list_empty(&h->watch_list) && read_thread_exists(h)) > + while (list_empty(&h->watch_list) && (!read_from_thread || > read_thread_exists(h))) > condvar_wait(&h->watch_condvar, &h->watch_mutex, h); > if (!read_thread_exists(h)) { > mutex_unlock(&h->watch_mutex); read_from_thread is not declared in this function _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |