From: Steven Rostedt <srostedt@xxxxxxxxxx> Subject: preempt-rt: implement rt_downgrade_write The current code of rt_downgrade_write simply does a BUG(). There are places in the kernel that uses this code, and will crash a runnning preempt-rt kernel. The rt_downgrade_write converts a rwsem held for write into a rwsem held for read without ever releasing the semaphore. In -rt, the rwsems are simply a mutex. There is nothing different between a rwsem held for write, and one held for read. The difference is that one held for read can nest. This patch changes the BUG_ON() to simply BUG if the caller is not the owner of the semaphore. This patch comes from my rt-git repo, and has been tested there. Signed-off-by: Steven Rostedt <rostedt@xxxxxxxxxxx> --- kernel/rt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: linux-2.6-rt/kernel/rt.c =================================================================== --- linux-2.6-rt.orig/kernel/rt.c 2009-04-15 10:02:37.000000000 -0400 +++ linux-2.6-rt/kernel/rt.c 2009-04-15 11:28:13.000000000 -0400 @@ -316,7 +316,7 @@ EXPORT_SYMBOL(rt_up_read); */ void rt_downgrade_write(struct rw_semaphore *rwsem) { - BUG(); + BUG_ON(rt_mutex_real_owner(&rwsem->lock) != current); } EXPORT_SYMBOL(rt_downgrade_write); -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html