Date: Wed, 20 Dec 1995 01:35:17 +1100 From: Bruce Evans <bde@zeta.org.au> To: davidg@Root.COM, j@uriah.heep.sax.de Cc: dufault@hda.com, freebsd-bugs@FreeBSD.ORG, gibbs@freefall.freebsd.org, hm@hcs.de, m.sapsed@bangor.ac.uk Subject: Re: Problem with FreeBSD 2.1.0-RELEASE Message-ID: <199512191435.BAA15480@godzilla.zeta.org.au>
index | next in thread | raw e-mail
>To recall it, the symptoms are that this panic happens for some people
>with many cd drives, and _only_ when accessing the last drive.
In that case, it must be a bounds checking error. Perhaps this one in
cd.c:
> if(dk_ndrive < DK_NDRIVE) {
> sprintf(dk_names[dk_ndrive], "cd%d", unit);
> dk_wpms[dk_ndrive] = (150*1024/2);
> SCSI_DATA(&cd_switch, unit)->dkunit = dk_ndrive++;
> } else {
> SCSI_DATA(&cd_switch, unit)->dkunit = -1;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Here the unit number for statistics is set to -1 (``none'') and statistics
aren't kept for this or subsequently attached drivers of any type.
> }
> ...
> if(cd->dkunit) {
^^^^^^^^^^^^^^
Here the ``none'' unit number is assumed to be 0. Other drivers check
correctly: `if (xd->dkunit >= 0)'.
> dk_xfer[cd->dkunit]++;
> dk_seek[cd->dkunit]++; /* don't know */
> dk_wds[cd->dkunit] += bp->b_bcount >> 6;
> }
Bruce
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512191435.BAA15480>
