Date: Mon, 10 Aug 2009 17:00:14 GMT From: Arrigo Marchiori <ardovm@yahoo.it> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/132172: [panic] Page fault panic in scioctl and console-kit-daemon (port: sysutils/consolekit on 6.4-STABLE) Message-ID: <200908101700.n7AH0EtF007497@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/132172; it has been noted by GNATS. From: Arrigo Marchiori <ardovm@yahoo.it> To: bug-followup@FreeBSD.org, ardovm@yahoo.it Cc: Subject: Re: kern/132172: [panic] Page fault panic in scioctl and console-kit-daemon (port: sysutils/consolekit on 6.4-STABLE) Date: Mon, 10 Aug 2009 18:32:48 +0200 --liOOAslEiF7prFVr Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Hello, I have adapted this patch: http://lists.freebsd.org/pipermail/freebsd-current/attachments/20080221/6f6e5ded/sys_dev_syscons.obj to the file /usr/src/sys/dev/syscons/syscons.c as in 6.4-STABLE, cvsup'ed today. When this patch is applied, the panic seems to disappear. BUT: I actually don't know what this patch does! I just blindly adapted to "our" file, by finding the similar lines. I think we need a kernel developer to check that this patch doesn't generate other problems. Hope this helps, -- rigo http://rigo.altervista.org --liOOAslEiF7prFVr Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="syscons_c_patch.txt" --- syscons.c.old 2009-08-10 16:22:28.000000000 +0200 +++ syscons.c 2009-08-10 16:22:18.000000000 +0200 @@ -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)) { --liOOAslEiF7prFVr--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200908101700.n7AH0EtF007497>