Date: Sat, 18 Oct 1997 09:32:50 +0100 (MET) From: Luigi Rizzo <luigi@labinfo.iet.unipi.it> To: msmith@FreeBSD.ORG, jkh@time.cdrom.com, stable@FreeBSD.ORG Subject: missing parentheses in isa.c Message-ID: <199710180832.JAA15606@labinfo.iet.unipi.it>
next in thread | raw e-mail | index | archive | help
for a long time, checks in isa.c to determine if a DMA channel is in use have been broken: The typical error pattern and fix is as follows: - if (dma_inuse & (1 << chan) == 0) + if ((dma_inuse & (1 << chan)) == 0) and occurs 4 times in isa.c. The code has been fixed in -current, I suggest that the fix is brought over to -RELEASE. As it is now, these tests always fail. Relevant diffs against 2.2.5-971015-BETA /sys/i386/isa/isa.c are as follows (you have to apply them by hand since i have other local modifications and line numbers might not match): @@ -590,7 +592,7 @@ if (chan & ~VALID_DMA_MASK) panic("isa_dma_release: channel out of range"); - if (dma_inuse & (1 << chan) == 0) + if ((dma_inuse & (1 << chan)) == 0) printf("isa_dma_release: channel %d not in use\n", chan); #endif @@ -646,11 +732,11 @@ if ((chan < 4 && nbytes > (1<<16)) || (chan >= 4 && (nbytes > (1<<17) || (u_int)addr & 1))) panic("isa_dmastart: impossible request"); - - if (dma_inuse & (1 << chan) == 0) - printf("isa_dmastart: channel %d not acquired\n", chan); #endif + if ((dma_inuse & (1 << chan)) == 0) + printf("isa_dmastart: channel %d not acquired\n", chan); @@ -742,25 +834,37 @@ } } { #ifdef DIAGNOSTIC if (chan & ~VALID_DMA_MASK) panic("isa_dmadone: channel out of range"); - if (dma_inuse & (1 << chan) == 0) + if ((dma_inuse & (1 << chan)) == 0) printf("isa_dmadone: channel %d not acquired\n", chan); #endif #if 0 /* * XXX This should be checked, but drivers like ad1848 only call * isa_dmastart() once because they use Auto DMA mode. If we * leave this in, drivers that do this will print this continuously. */ - if (dma_busy & (1 << chan) == 0) + if ((dma_busy & (1 << chan)) == 0) Cheers Luigi -----------------------------+-------------------------------------- Luigi Rizzo | Dip. di Ingegneria dell'Informazione email: luigi@iet.unipi.it | Universita' di Pisa tel: +39-50-568533 | via Diotisalvi 2, 56126 PISA (Italy) fax: +39-50-568522 | http://www.iet.unipi.it/~luigi/ _____________________________|______________________________________
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199710180832.JAA15606>