moused related panic
Giorgos Keramidas
keramida at freebsd.org
Tue Sep 6 13:17:31 PDT 2005
On 2005-09-06 17:03, Giorgos Keramidas <keramida at freebsd.org> wrote:
> On 2005-09-06 09:32, Craig Rodrigues <rodrigc at crodrigues.org> wrote:
> > Can you try this:
> >
> > Index: scvidctl.c
> > ===================================================================
> > RCS file: /home/ncvs/src/sys/dev/syscons/scvidctl.c,v
> > retrieving revision 1.35
> > diff -u -u -r1.35 scvidctl.c
> > --- scvidctl.c 30 Aug 2005 18:58:16 -0000 1.35
> > +++ scvidctl.c 6 Sep 2005 13:31:30 -0000
> > @@ -145,6 +145,8 @@
> > return ENODEV;
> >
> > /* adjust argument values */
> > + if (fontwidth <= 0)
> > + fontwidth = info.vi_cwidth;
> > if (fontsize <= 0)
> > fontsize = info.vi_cheight;
> > if (fontsize < 14) {
>
> This looks promising. I'll try it out, after reverting my local patch
> in a while.
Magnificent. This fixes the panics, even with the following KASSERT's
which were left from yesterday, when I was trying to find out what
scp->font_xxx values set_mouse_pos() got.
%%%
Index: scmouse.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/syscons/scmouse.c,v
retrieving revision 1.38
diff -u -r1.38 scmouse.c
--- scmouse.c 30 Aug 2005 18:58:16 -0000 1.38
+++ scmouse.c 6 Sep 2005 15:41:32 -0000
@@ -140,6 +140,9 @@
static void
set_mouse_pos(scr_stat *scp)
{
+
+ KASSERT(scp != NULL, ("null scp"));
+
if (scp->mouse_xpos < scp->xoff*scp->font_width)
scp->mouse_xpos = scp->xoff*scp->font_width;
if (scp->mouse_ypos < scp->yoff*scp->font_size)
@@ -158,6 +161,8 @@
}
if (scp->mouse_xpos != scp->mouse_oldxpos || scp->mouse_ypos != scp->mouse_oldypos) {
+ KASSERT(scp->font_width > 0, ("invalid scp->font_width"));
+ KASSERT(scp->font_size > 0, ("invalid scp->font_size"));
scp->status |= MOUSE_MOVED;
scp->mouse_pos =
(scp->mouse_ypos/scp->font_size - scp->yoff)*scp->xsize
Index: scvidctl.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/syscons/scvidctl.c,v
retrieving revision 1.35
diff -u -r1.35 scvidctl.c
--- scvidctl.c 30 Aug 2005 18:58:16 -0000 1.35
+++ scvidctl.c 6 Sep 2005 15:17:22 -0000
@@ -145,6 +145,8 @@
return ENODEV;
/* adjust argument values */
+ if (fontwidth <= 0)
+ fontwidth = info.vi_cwidth;
if (fontsize <= 0)
fontsize = info.vi_cheight;
if (fontsize < 14) {
%%%
More information about the freebsd-current
mailing list