diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2008-02-13 09:45:39 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-02-13 09:45:39 -0500 |
commit | 4cf5d77a6eefaa7a464bc34e8cb767356f10fd74 (patch) | |
tree | ad011b73207b6c8523189b873d8b1c3757d84e12 | |
parent | 8ed3699682be75fd68281239c202ad3830f9c72d (diff) |
sched: fix incorrect irq lock usage in normalize_rt_tasks()
lockdep spotted this bogus irq locking. normalize_rt_tasks() can be called
from hardirq context through sysrq-n
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | kernel/sched.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 6b02276baaa6..88a17c7128c3 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -7291,7 +7291,7 @@ void normalize_rt_tasks(void) | |||
7291 | unsigned long flags; | 7291 | unsigned long flags; |
7292 | struct rq *rq; | 7292 | struct rq *rq; |
7293 | 7293 | ||
7294 | read_lock_irq(&tasklist_lock); | 7294 | read_lock_irqsave(&tasklist_lock, flags); |
7295 | do_each_thread(g, p) { | 7295 | do_each_thread(g, p) { |
7296 | /* | 7296 | /* |
7297 | * Only normalize user tasks: | 7297 | * Only normalize user tasks: |
@@ -7317,16 +7317,16 @@ void normalize_rt_tasks(void) | |||
7317 | continue; | 7317 | continue; |
7318 | } | 7318 | } |
7319 | 7319 | ||
7320 | spin_lock_irqsave(&p->pi_lock, flags); | 7320 | spin_lock(&p->pi_lock); |
7321 | rq = __task_rq_lock(p); | 7321 | rq = __task_rq_lock(p); |
7322 | 7322 | ||
7323 | normalize_task(rq, p); | 7323 | normalize_task(rq, p); |
7324 | 7324 | ||
7325 | __task_rq_unlock(rq); | 7325 | __task_rq_unlock(rq); |
7326 | spin_unlock_irqrestore(&p->pi_lock, flags); | 7326 | spin_unlock(&p->pi_lock); |
7327 | } while_each_thread(g, p); | 7327 | } while_each_thread(g, p); |
7328 | 7328 | ||
7329 | read_unlock_irq(&tasklist_lock); | 7329 | read_unlock_irqrestore(&tasklist_lock, flags); |
7330 | } | 7330 | } |
7331 | 7331 | ||
7332 | #endif /* CONFIG_MAGIC_SYSRQ */ | 7332 | #endif /* CONFIG_MAGIC_SYSRQ */ |