aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/delayacct.h
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2018-04-23 18:10:23 +0200
committerThomas Gleixner <tglx@linutronix.de>2018-04-27 14:34:51 +0200
commit02acc80d19edb0d5684c997b2004ad19f9f5236e (patch)
tree068ff4bf66e2bf13dc73e56d858e8f7f4994dfda /include/linux/delayacct.h
parentlocking/qspinlock: Remove duplicate clear_pending() function from PV code (diff)
downloadlinux-dev-02acc80d19edb0d5684c997b2004ad19f9f5236e.tar.xz
linux-dev-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.h2
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