home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!wupost!sdd.hp.com!uakari.primate.wisc.edu!ames!agate!linus!linus.mitre.org!heckle!wheeler
- From: wheeler@heckle.mitre.org (Brien L. Wheeler)
- Newsgroups: comp.unix.bsd
- Subject: 386BSD Bug in wd.c
- Keywords: wd.c malloc bzero
- Message-ID: <1992Jul30.024553.2340@linus.mitre.org>
- Date: 30 Jul 92 02:45:53 GMT
- Sender: wheeler@heckle (Brien L. Wheeler)
- Organization: The MITRE Corporation, Bedford, MA
- Lines: 76
- Nntp-Posting-Host: heckle.mitre.org
-
- I sent this bug report off to Lynne Jolitz tonight. Some non-initialized
- memory in wd.c prevents my machine from warm-rebooting. Trivial context
- diff attached.
-
- The system really looks great -- thanks Bill and Lynne!
- -----
-
- BUG FINDER INFORMATION
-
- NAME: Brien L. Wheeler
- TITLE: Technical Staff
- FIRM: The MITRE Corporation
- ADDRESS: Mail Stop K331
- 202 Burlington Road
- Bedford, MA 01730
- COUNTRY: USA
- PHONE: 617-271-2567
- FAX: 617-271-2352
- EMAIL: blw@mitre.org
-
-
- PC INFORMATION
-
- 1. What is your PC system configuration? Please be
- specific, as success can vary with a difference in
- manufacture date or variation.
-
- 386/486/387: Zenith Z-386 (386 + 387) (16 MHz?)
- ISA/EISA/SCSI: ISA
- RAM size: 5 MB
- drive(s) type and size: Winchester 80 MB (Seagate?)
- Winchester 40 MB (Seagate?)
- tape(s) type and size: None
- ethernet type: WD 8013 Elite
- graphics type: VGA
- serial type:
- parallel type:
- other: None
-
-
- Bugs
-
- 1. What bugs have you found in this system? Please attach
- any pertinent printouts and system messages. Please
- also attach any bug fixes for others to use.
-
-
- In usr/src/sys.386bsd/i386/isa/wd.c, the memory malloc'd for a
- new struct disk in wdprobe() is not bzero'd before its use. On
- my machine, this prevents a warm reboot -- malloc grabs the same
- memory as the previous boot sequence, and sees the disk as
- already open (du->dk_state == 3). This causes wdsize() to return
- a -1 to swapconf() (since dk_state is not zero the wdopen() is not
- called, leaving val uninitialized, resulting in a return code of -1).
- This screws everything up royally. The fix is easy -- bzero the
- memory malloc'd in wdprobe(). Context diff follows.
-
- -----
- *** wd.c.orig Tue Jul 14 20:55:21 1992
- --- wd.c Wed Jul 29 22:33:58 1992
- ***************
- *** 149,154 ****
- --- 149,155 ----
- if ((du = wddrives[unit]) == 0) {
- du = wddrives[unit] = (struct disk *)
- malloc (sizeof(struct disk), M_TEMP, M_NOWAIT);
- + bzero(du, sizeof(*du));
- du->dk_unit = unit;
- }
-
-
- --
- Brien L. Wheeler | I don't speak for MITRE, and they
- blw@mitre.org | don't speak for me.
-
- "When I think back on all the crap I learned in high school..."
-