Skip site navigation (1)Skip section navigation (2)
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>