• Steven Rostedt's avatar
    [PATCH] clean up and remove some extra spinlocks from rtmutex · db630637
    Steven Rostedt authored
    Oleg brought up some interesting points about grabbing the pi_lock for some
    protections.  In this discussion, I realized that there are some places
    that the pi_lock is being grabbed when it really wasn't necessary.  Also
    this patch does a little bit of clean up.
    
    This patch basically does three things:
    
    1) renames the "boost" variable to "chain_walk".  Since it is used in
       the debugging case when it isn't going to be boosted.  It better
       describes what the test is going to do if it succeeds.
    
    2) moves get_task_struct to just before the unlocking of the wait_lock.
       This removes duplicate code, and makes it a little easier to read.  The
       owner wont go away while either the pi_lock or the wait_lock are held.
    
    3) removes the pi_locking and owner blocked checking completely from the
       debugging case.  This is because the grabbing the lock and doing the
       check, then releasing the lock is just so full of races.  It's just as
       good to go ahead and call the pi_chain_walk function, since after
       releasing the lock the owner can then block anyway, and we would have
       missed that.  For the debug case, we really do want to do the chain walk
       to test for deadlocks anyway.
    
    [oleg@tv-sign.ru: more of the same]
    Signed-of-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Oleg Nesterov <oleg@tv-sign.ru>
    Cc: Esben Nielsen <nielsen.esben@googlemail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    db630637
rtmutex.c 25.3 KB