From fff79367c87a42fdce8c024eee7d9e2870960a70 Mon Sep 17 00:00:00 2001 From: Pierre Habouzit Date: Sun, 15 Jan 2012 21:00:49 +0100 Subject: [PATCH 1/1] fix a few more bugs detected by the simple tester. Signed-off-by: Pierre Habouzit --- Makefile | 2 +- kernel/pwqr.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index e03609c..24733f0 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ all clean: - $(MAKE) -C kernel $@ + cd kernel && $(MAKE) $(filter-out all,$@) $(MAKE) -C lib $@ $(MAKE) -C test $@ diff --git a/kernel/pwqr.c b/kernel/pwqr.c index 233bd7a..c705dfa 100644 --- a/kernel/pwqr.c +++ b/kernel/pwqr.c @@ -324,6 +324,7 @@ static void pwqr_task_detach(struct pwqr_task *pwqt, struct pwqr_sb *sb) } else { __pwqr_sb_update_state(sb, 0); } + pwqt->notifier.ops = &pwqr_preempt_noop_ops; pwqr_sb_unlock_irqrestore(sb, flags); pwqr_sb_put(sb); pwqt->sb = NULL; @@ -351,7 +352,6 @@ static void pwqr_task_release(struct pwqr_task *pwqt, bool from_notifier) hlist_del(&pwqt->link); spin_unlock(&b->lock); #endif - pwqt->notifier.ops = &pwqr_preempt_noop_ops; if (from_notifier) { /* When called from sched_{out,in}, it's not allowed to @@ -374,7 +374,7 @@ static void pwqr_task_noop_sched_in(struct preempt_notifier *notifier, int cpu) } static void pwqr_task_noop_sched_out(struct preempt_notifier *notifier, - struct task_struct *next) + struct task_struct *next) { } @@ -386,7 +386,6 @@ static void pwqr_task_blocked_sched_in(struct preempt_notifier *notifier, int cp if (unlikely(sb->state < 0)) { pwqr_task_detach(pwqt, sb); - pwqr_task_release(pwqt, true); return; } @@ -405,7 +404,8 @@ static void pwqr_task_sched_out(struct preempt_notifier *notifier, if (unlikely(p->state & TASK_DEAD) || unlikely(sb->state < 0)) { pwqr_task_detach(pwqt, sb); - pwqr_task_release(pwqt, true); + if (p->state & TASK_DEAD) + pwqr_task_release(pwqt, true); return; } if (p->state == 0 || (p->state & (__TASK_STOPPED | __TASK_TRACED))) -- 2.20.1