Date: Wed, 6 Mar 1996 16:10:56 +0300 From: vak@crox.net.kiae.su (Serge V.Vakulenko) To: FreeBSD-gnats-submit@freebsd.org Subject: kern/1065: patch for wt driver Message-ID: <199603061310.QAA00489@crox.net.kiae.su> Resent-Message-ID: <199603061320.FAA19626@freefall.freebsd.org>
index | next in thread | raw e-mail
>Number: 1065
>Category: kern
>Synopsis: wt could crash reading short blocks
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Mar 6 05:20:01 PST 1996
>Last-Modified:
>Originator: Serge V.Vakulenko
>Organization:
Cronyx Ltd., Moscow
>Release: FreeBSD 2.1-STABLE i386
>Environment:
FreeBSD 2.1 and Archive tape streamer
>Description:
The system crashes when trying to read the tape
using small block size (less than 2048 bytes).
>How-To-Repeat:
dd bs=1 < /dev/rwt0 > /dev/null
>Fix:
--- wt21.c Thu Sep 14 11:09:39 1995
+++ wt.c Wed Mar 6 15:41:49 1996
@@ -634,8 +634,6 @@
DEBUG (("unexpected interrupt\n"));
return;
}
- t->flags &= ~TPACTIVE;
- t->dmacount += t->bsize; /* increment counter */
/*
* Clean up dma.
@@ -648,6 +646,10 @@
} else
isa_dmadone (t->dmaflags, t->dmavaddr, t->bsize, t->chan);
+ t->flags &= ~TPACTIVE;
+ t->dmacount += t->bsize;
+ t->dmavaddr += t->bsize;
+
/*
* On exception, check for end of file and end of volume.
*/
@@ -663,7 +665,6 @@
}
if (t->dmacount < t->dmatotal) { /* continue i/o */
- t->dmavaddr += t->bsize;
wtdma (t);
DEBUG (("continue i/o, %d\n", t->dmacount));
return;
>Audit-Trail:
>Unformatted:
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199603061310.QAA00489>
