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