summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/cy.c
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1998-11-28 13:18:16 +0000
committerbde <bde@FreeBSD.org>1998-11-28 13:18:16 +0000
commit8f11507158b1ddd01885cc36b8da7e9f3e076721 (patch)
tree2f60487d168a2bb1f1c1a46dfcd5797d5ac0417e /sys/i386/isa/cy.c
parentdb70b202394164c029f74456ac007910e2be176d (diff)
downloadFreeBSD-src-8f11507158b1ddd01885cc36b8da7e9f3e076721.zip
FreeBSD-src-8f11507158b1ddd01885cc36b8da7e9f3e076721.tar.gz
Merge from sio.c rev.1.163:
Don't call timeout() for DTR wakeup if the relevant timeout is already active. This fixes "timeout table full" panics when sufficiently many cyopen()s are interrupted while they are sleeping waiting for the timeout to expire.
Diffstat (limited to 'sys/i386/isa/cy.c')
-rw-r--r--sys/i386/isa/cy.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/i386/isa/cy.c b/sys/i386/isa/cy.c
index 1d41b5b..6e810c0 100644
--- a/sys/i386/isa/cy.c
+++ b/sys/i386/isa/cy.c
@@ -27,7 +27,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: cy.c,v 1.73 1998/11/22 17:40:32 bde Exp $
+ * $Id: cy.c,v 1.74 1998/11/23 13:58:55 bde Exp $
*/
#include "opt_compat.h"
@@ -931,7 +931,7 @@ comhardclose(com)
| CD1400_CCR_RCVDIS;
cd1400_channel_cmd(com, com->channel_control);
- if (com->dtr_wait != 0) {
+ if (com->dtr_wait != 0 && !(com->state & CS_DTR_OFF)) {
timeout(siodtrwakeup, com, com->dtr_wait);
com->state |= CS_DTR_OFF;
}
OpenPOWER on IntegriCloud