diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2018-04-23 19:10:23 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-08-03 08:50:38 +0300 |
commit | c06f5a018f710ff24ef7c1b922d2b6704c35dd8c (patch) | |
tree | 2d5de1d41733fd3c928fd3532a6782c9438171bc /include | |
parent | da2b62c740def7d1e9d7ce4506e8b1b7a2514e89 (diff) | |
download | linux-c06f5a018f710ff24ef7c1b922d2b6704c35dd8c.tar.xz |
delayacct: Use raw_spinlocks
[ Upstream commit 02acc80d19edb0d5684c997b2004ad19f9f5236e ]
try_to_wake_up() might invoke delayacct_blkio_end() while holding the
pi_lock (which is a raw_spinlock_t). delayacct_blkio_end() acquires
task_delay_info.lock which is a spinlock_t. This causes a might sleep splat
on -RT where non raw spinlocks are converted to 'sleeping' spinlocks.
task_delay_info.lock is only held for a short amount of time so it's not a
problem latency wise to make convert it to a raw spinlock.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Balbir Singh <bsingharora@gmail.com>
Link: https://lkml.kernel.org/r/20180423161024.6710-1-bigeasy@linutronix.de
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/delayacct.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/delayacct.h b/include/linux/delayacct.h index 41ee6dea7531..31c865d1842e 100644 --- a/include/linux/delayacct.h +++ b/include/linux/delayacct.h @@ -29,7 +29,7 @@ #ifdef CONFIG_TASK_DELAY_ACCT struct task_delay_info { - spinlock_t lock; + raw_spinlock_t lock; unsigned int flags; /* Private per-task flags */ /* For each stat XXX, add following, aligned appropriately |