linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch] exit-fix-2.5.38-F0
@ 2002-09-26 13:20 Ingo Molnar
  0 siblings, 0 replies; only message in thread
From: Ingo Molnar @ 2002-09-26 13:20 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Andrew Morton, linux-kernel


i've attached a patch i got from Andrew - he found a couple of places
where we would enable interrupts while write-holding the tasklist_lock ...  
nasty.

against BK-curr, works as expected.

	Ingo

--- linux/kernel/sched.c.orig	Thu Sep 26 12:48:42 2002
+++ linux/kernel/sched.c	Thu Sep 26 13:00:39 2002
@@ -477,13 +477,15 @@
  */
 void sched_exit(task_t * p)
 {
-	local_irq_disable();
+	unsigned long flags;
+
+	local_irq_save(flags);
 	if (p->first_time_slice) {
 		p->parent->time_slice += p->time_slice;
 		if (unlikely(p->parent->time_slice > MAX_TIMESLICE))
 			p->parent->time_slice = MAX_TIMESLICE;
 	}
-	local_irq_enable();
+	local_irq_restore(flags);
 	/*
 	 * If the child was a (relative-) CPU hog then decrease
 	 * the sleep_avg of the parent as well.
--- linux/kernel/signal.c.orig	Thu Sep 26 12:48:42 2002
+++ linux/kernel/signal.c	Thu Sep 26 13:00:39 2002
@@ -1086,6 +1086,7 @@
  */
 static inline void wake_up_parent(struct task_struct *p)
 {
+	unsigned long flags;
 	struct task_struct *parent = p->parent, *tsk = parent;
 
 	/*
@@ -1095,14 +1096,14 @@
 		wake_up_interruptible(&tsk->wait_chldexit);
 		return;
 	}
-	spin_lock_irq(&parent->sig->siglock);
+	spin_lock_irqsave(&parent->sig->siglock, flags);
 	do {
 		wake_up_interruptible(&tsk->wait_chldexit);
 		tsk = next_thread(tsk);
 		if (tsk->sig != parent->sig)
 			BUG();
 	} while (tsk != parent);
-	spin_unlock_irq(&parent->sig->siglock);
+	spin_unlock_irqrestore(&parent->sig->siglock, flags);
 }
 
 /*


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-09-26 13:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-09-26 13:20 [patch] exit-fix-2.5.38-F0 Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).