kern/132172: [patch] [panic] Page fault panic in scioctl and console-kit-daemon (port: sysutils/consolekit on 6.4-STABLE)

Random User rannumgen at globaleyes.net
Tue Aug 11 05:20:03 UTC 2009


The following reply was made to PR kern/132172; it has been noted by GNATS.

From: Random User <rannumgen at globaleyes.net>
To: bug-followup at FreeBSD.org, ardovm at yahoo.it
Cc:  
Subject: Re: kern/132172: [patch] [panic] Page fault panic in scioctl and
 console-kit-daemon (port: sysutils/consolekit on 6.4-STABLE)
Date: Tue, 11 Aug 2009 00:15:12 -0500

 This is a multi-part message in MIME format.
 --------------050305070801030304050901
 Content-Type: text/plain; charset=ISO-8859-1
 Content-Transfer-Encoding: 7bit
 
 A slight correction to the patch offered at
 
 http://lists.freebsd.org/pipermail/freebsd-current/attachments/20080221/6f6e5ded/sys_dev_syscons.obj
 
 plus kernel/world rebuild and reinstall has FIXED my page fault problem!
 
 Hald, dbus, console-kit-daemon, Gnome-2.26, Xorg-7.4_2, and
 nvidia-driver-185.18.29 are all now "happily" running. (sigh!)
 
 --------------050305070801030304050901
 Content-Type: text/plain;
  name="syscons.c.udiffs"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline;
  filename="syscons.c.udiffs"
 
 --- syscons.c.orig	2007-11-17 09:15:25.000000000 -0600
 +++ syscons.c	2009-08-10 22:18:51.000000000 -0500
 @@ -1052,15 +1052,9 @@
  	i = (*(int *)data == 0) ? scp->index : (*(int *)data - 1);
  	if ((i < sc->first_vty) || (i >= sc->first_vty + sc->vtys))
  	    return EINVAL;
 -	s = spltty();
 -	error = sc_clean_up(sc->cur_scp);
 -	splx(s);
 -	if (error)
 -	    return error;
 -	scp = sc_get_stat(SC_DEV(sc, i));
 -	if (scp == scp->sc->cur_scp)
 +	if (i == sc->cur_scp->index)
  	    return 0;
 -	error = tsleep(&scp->smode, PZERO | PCATCH, "waitvt", 0);
 +	error = tsleep(SC_DEV(sc, i), PZERO | PCATCH, "waitvt", 0);
  	return error;
  
      case VT_GETACTIVE:		/* get active vty # */
 @@ -2336,7 +2330,7 @@
  	 * be invoked at splhigh().
  	 */
  	if (debugger == 0)
 -	    wakeup(&sc->new_scp->smode);
 +	    wakeup(SC_DEV(sc,next_scr));
  	splx(s);
  	DPRINTF(5, ("switch done (new == old)\n"));
  	return 0;
 @@ -2359,7 +2353,7 @@
  
      /* wake up processes waiting for this vty */
      if (debugger == 0)
 -	wakeup(&sc->cur_scp->smode);
 +	wakeup(SC_DEV(sc,next_scr));
  
      /* wait for the controlling process to acknowledge, if necessary */
      if (signal_vt_acq(sc->cur_scp)) {
 @@ -2385,7 +2379,7 @@
      exchange_scr(sc);
      s = spltty();
      /* sc->cur_scp == sc->new_scp */
 -    wakeup(&sc->cur_scp->smode);
 +    wakeup(SC_DEV(sc,sc->cur_scp->index));
  
      /* wait for the controlling process to acknowledge, if necessary */
      if (!signal_vt_acq(sc->cur_scp)) {
 
 --------------050305070801030304050901--


More information about the freebsd-bugs mailing list