diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2015-11-06 18:51:03 +0100 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2015-11-07 19:06:04 +0100 |
commit | 327f05613ccd2be24684ae962852547340d52388 (patch) | |
tree | 75012e11e3fb4cb7a64fe91ec79eeb6aa421e70c /drivers/md | |
parent | fe13315a8ef974e12b8cdf3ba115903311f2bfbe (diff) | |
download | linux-rt-327f05613ccd2be24684ae962852547340d52388.tar.gz |
rtmutex: Handle non enqueued waiters gracefully
Yimin debugged that in case of a PI wakeup in progress when
rt_mutex_start_proxy_lock() calls task_blocks_on_rt_mutex() the latter
returns -EAGAIN and in consequence the remove_waiter() call runs into
a BUG_ON() because there is nothing to remove.
Guard it with rt_mutex_has_waiters(). This is a quick fix which is
easy to backport. The proper fix is to have a central check in
remove_waiter() so we can call it unconditionally.
Reported-and-debugged-by: Yimin Deng <yimin11.deng@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
Diffstat (limited to 'drivers/md')
0 files changed, 0 insertions, 0 deletions