diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2018-04-23 18:10:23 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2018-04-27 14:34:51 +0200 |
commit | 02acc80d19edb0d5684c997b2004ad19f9f5236e (patch) | |
tree | 068ff4bf66e2bf13dc73e56d858e8f7f4994dfda /include/linux/delayacct.h | |
parent | 3bea9adc96842b8a7345c7fb202c16ae9c8d5b25 (diff) | |
download | lwn-02acc80d19edb0d5684c997b2004ad19f9f5236e.tar.gz lwn-02acc80d19edb0d5684c997b2004ad19f9f5236e.zip |
delayacct: Use raw_spinlocks
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
Diffstat (limited to 'include/linux/delayacct.h')
-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 5e335b6203f4..e6c0448ebcc7 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 |