summaryrefslogtreecommitdiffstats
path: root/rt-Make-rt_down_read_trylock-behave-like-down_read_t.patch
blob: b994d26e854b5c93b50202656b3269e546355309 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
From 414be9451245bab037cb3b82de8b7172316a0e65 Mon Sep 17 00:00:00 2001
From: Jan Blunck <jblunck@suse.de>
Date: Fri, 3 Jul 2009 13:16:23 -0500
Subject: [PATCH] rt: Make rt_down_read_trylock() behave like down_read_trylock()

commit 1a0adb9869dac631ed5d45d0afed72cfce0d9d66 in tip.

This patch removes the stupid "Read locks within the self-held write
lock succeed" behaviour. This is breaking in mm_take_all_locks() since
it is quite common to ensure that a lock is taken with
BUG_ON(down_read_trylock(&mm->mmap_sem)).

Signed-off-by: Jan Blunck <jblunck@suse.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
 kernel/rt.c |   12 ------------
 1 files changed, 0 insertions(+), 12 deletions(-)

diff --git a/kernel/rt.c b/kernel/rt.c
index 97709a6..d095969 100644
--- a/kernel/rt.c
+++ b/kernel/rt.c
@@ -380,18 +380,6 @@ int  rt_down_read_trylock(struct rw_semaphore *rwsem)
 	unsigned long flags;
 	int ret;
 
-	/*
-	 * Read locks within the self-held write lock succeed.
-	 */
-	spin_lock_irqsave(&rwsem->lock.wait_lock, flags);
-	if (rt_mutex_real_owner(&rwsem->lock) == current) {
-		spin_unlock_irqrestore(&rwsem->lock.wait_lock, flags);
-		rwsem_acquire_read(&rwsem->dep_map, 0, 1, _RET_IP_);
-		rwsem->read_depth++;
-		return 1;
-	}
-	spin_unlock_irqrestore(&rwsem->lock.wait_lock, flags);
-
 	ret = rt_mutex_trylock(&rwsem->lock);
 	if (ret)
 		rwsem_acquire(&rwsem->dep_map, 0, 1, _RET_IP_);
-- 
1.7.0.4