Date: Tue, 21 Jan 1997 17:20:02 -0800 (PST) From: Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp> To: freebsd-bugs Subject: Re: kern/2553: moused caused panic Message-ID: <199701220120.RAA29798@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/2553; it has been noted by GNATS.
From: Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
To: adrian@virginia.edu
Cc: FreeBSD-gnats-submit@freebsd.org, yokota@zodiac.mech.utsunomiya-u.ac.jp
Subject: Re: kern/2553: moused caused panic
Date: Wed, 22 Jan 1997 10:21:06 +0900
>>Description:
>
> When booting without a mouse plugged in, moused causes the kernel
> to panic. Here is the panic message:
The problem has been fixed and committed to the source tree.
Apply the first patch to /usr/src/sys/i386/isa/psm.c and the second
patch to /usr/src/usr.sbin/moused/moused.c (if you don't run moused,
you don't need this one, though).
>>Fix:
>
> Workaround: Plug my mouse in or make sure moused is not
> loaded at boot time.
>
> A real fix probably involves the psm driver, which is beyond me.
You are right, and it's done.
Thank you for your report.
Kazu
<<<< patch to the psm driver >>>>
--- psm.c-dist Mon Dec 2 06:37:16 1996
+++ psm.c Sat Jan 4 11:54:32 1997
@@ -508,6 +508,8 @@
if (unit >= NPSM)
return (0);
+ psm_softc[unit] = NULL;
+
sc = malloc(sizeof *sc, M_DEVBUF, M_NOWAIT);
bzero(sc, sizeof *sc);
@@ -745,6 +747,9 @@
int unit = dvp->id_unit;
struct psm_softc *sc = psm_softc[unit];
+ if (sc == NULL) /* shouldn't happen */
+ return (0);
+
/* initial operation mode */
sc->mode.accelfactor = PSM_ACCEL;
sc->mode.protocol = MOUSE_PROTO_PS2;
@@ -786,6 +791,8 @@
/* Get device data */
sc = psm_softc[unit];
+ if (sc == NULL)
+ return (ENXIO);
if ((sc->state & PSM_VALID) == 0)
/* the device is no longer valid/functioning */
return (ENXIO);
<<<< patch to moused >>>>
--- moused.c-dist Wed Sep 11 05:03:37 1996
+++ moused.c Fri Dec 27 17:05:45 1996
@@ -53,6 +53,9 @@
#include <fcntl.h>
#include <termios.h>
#include <machine/console.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <unistd.h>
#define debug(fmt,args...) \
if (debug&&nodaemon) fprintf(stderr,"%s: " fmt "\n", progname, ##args)
@@ -150,6 +153,7 @@
struct termios t;
struct mouse_info mouse;
int saved_buttons = 0;
+ fd_set fds;
progname = argv[0];
@@ -243,6 +247,9 @@
for(;;)
{
+ FD_ZERO(&fds);
+ FD_SET(rodent.mfd,&fds);
+ select(FD_SETSIZE,&fds,NULL,&fds,NULL);
i = read(rodent.mfd,&b,1); /* get a byte */
if (i != 1) /* read returned or error; goodbye */
{
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199701220120.RAA29798>
