Date: Wed, 10 Mar 1999 22:32:41 +0100 (CET) From: Frode Vatvedt Fjeld <frodef@dslab7.cs.uit.no> To: FreeBSD-gnats-submit@freebsd.org Subject: i386/10533: meteor driver panics Message-ID: <199903102132.WAA08519@dslab7.cs.uit.no>
next in thread | raw e-mail | index | archive | help
>Number: 10533 >Category: i386 >Synopsis: A bug in the meteor driver causes kernel panic >Confidential: yes >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Mar 10 13:40:00 PST 1999 >Closed-Date: >Last-Modified: >Originator: Frode Vatvedt Fjeld >Release: FreeBSD 3.1-STABLE i386 >Organization: >Environment: FreeBSD-stable i386 with meteor video-grabber device. >Description: The meteor driver (sys/pci/meteor.c) provides an ioctl SSIGNAL for specifying a signal to send to the process when a video frame is delivered. When this ioctl is used, the kernel will (more often than not) panic (pagefault) just when the process exits. >How-To-Repeat: main() { open device ioctl (SSIGNAL) ioctl (CAPTUR) exit } >Fix: Adding a line "mtr -> proc = NULL;" somewhere in meteor_close() seems to remove the symptom. However, I guess the real problem is somewhere else. Also, the SSIGNAL ioctl interface is broken, as there is no way to return the device-driver to the original state (i.e. mtr -> proc == NULL) once this ioctl is used by a process. The code in meteor_ioctl() should go something like this: case SSIGNAL: mtr -> signal = arg; if (mtr -> signal) { mtr -> proc = p; } else { mtr -> proc = NULL; } break; >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199903102132.WAA08519>