mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
xenbus: add missing wakeup in concurrent read/write
If an application has a dedicated read thread watching xenbus and
another thread writes an XS_WATCH message that generates a synthetic
"OK" reply, this reply will be enqueued in the buffer without waking up
the reader. This can cause a deadlock in the application if it then
waits for the read thread to receive the queued message.
Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
commit e752969f502a511e83f841aa01d6cd332e6d85a0
Author: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Date: Tue Sep 7 11:21:52 2010 -0400
xenbus: fix deadlock in concurrent read/write
If an application has a dedicated read thread watching xenbus and another
thread writes an XS_WATCH message that generates a synthetic "OK" reply,
this reply will be enqueued in the buffer without waking up the reader.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
This commit is contained in:
parent
6d6df2e412
commit
76ce7618f9
|
|
@ -405,6 +405,7 @@ static int xenbus_write_watch(unsigned msg_type, struct xenbus_file_priv *u)
|
|||
|
||||
mutex_lock(&u->reply_mutex);
|
||||
rc = queue_reply(&u->read_buffers, &reply, sizeof(reply));
|
||||
wake_up(&u->read_waitq);
|
||||
mutex_unlock(&u->reply_mutex);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user