Lawrence Farr wrote:
I couldn't get this to apply cleanly against 7, is it safe to use rev
1.48 on 7? I have 3 machines here that hang whilst dumping and I'd
like to test the patch.

For RELENG_7, I'm using the attached. Apply it from /usr,

        Michael

*** src/sys/kern/subr_sleepqueue.c.orig	Thu Mar  6 11:13:14 2008
--- src/sys/kern/subr_sleepqueue.c	Fri Mar 14 21:58:58 2008
***************
*** 403,414 ****
  		mtx_unlock(&ps->ps_mtx);
  	}
  	/*
! 	 * Lock sleepq chain before unlocking proc
! 	 * without this, we could lose a race.
  	 */
  	mtx_lock_spin(&sc->sc_lock);
  	PROC_UNLOCK(p);
  	thread_lock(td);
  	if (ret == 0) {
  		if (!(td->td_flags & TDF_INTERRUPT)) {
  			sleepq_switch(wchan);
--- 403,417 ----
  		mtx_unlock(&ps->ps_mtx);
  	}
  	/*
! 	 * Lock the per-process spinlock prior to dropping the PROC_LOCK
! 	 * to avoid a signal delivery race.  PROC_LOCK, PROC_SLOCK, and
! 	 * thread_lock() are currently held in tdsignal().
  	 */
+ 	PROC_SLOCK(p);
  	mtx_lock_spin(&sc->sc_lock);
  	PROC_UNLOCK(p);
  	thread_lock(td);
+ 	PROC_SUNLOCK(p);
  	if (ret == 0) {
  		if (!(td->td_flags & TDF_INTERRUPT)) {
  			sleepq_switch(wchan);
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to