[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/3] linux-user: Fix mmap_lock ordering
From: |
riku . voipio |
Subject: |
[Qemu-devel] [PATCH 2/3] linux-user: Fix mmap_lock ordering |
Date: |
Fri, 4 Dec 2009 15:16:31 +0200 |
From: Riku Voipio <address@hidden>
mmap_lock() can be called while tb_lock() is being held. To
avoid deadlock when one thread is holding mmap_lock and another
tb_lock, _always_ lock first tb_lock().
Signed-off-by: Riku Voipio <address@hidden>
---
linux-user/main.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/linux-user/main.c b/linux-user/main.c
index 5fbcda2..2015f32 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -99,13 +99,14 @@ static int pending_cpus;
/* Make sure everything is in a consistent state for calling fork(). */
void fork_start(void)
{
- mmap_fork_start();
pthread_mutex_lock(&tb_lock);
pthread_mutex_lock(&exclusive_lock);
+ mmap_fork_start();
}
void fork_end(int child)
{
+ mmap_fork_end(child);
if (child) {
/* Child processes created by fork() only have a single thread.
Discard information about the parent threads. */
@@ -122,7 +123,6 @@ void fork_end(int child)
pthread_mutex_unlock(&exclusive_lock);
pthread_mutex_unlock(&tb_lock);
}
- mmap_fork_end(child);
}
/* Wait for pending exclusive operations to complete. The exclusive lock
--
1.6.3.3