summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorHenric Jungheim <henric@cvs.openbsd.org>2003-05-22 21:16:30 +0000
committerHenric Jungheim <henric@cvs.openbsd.org>2003-05-22 21:16:30 +0000
commita0ff266e224d31e5fd5b12efb00c3ca1bc9ada8c (patch)
tree3c03fe271a3eb94f67902e04e870234a6faea859 /sys
parent77d96fd9c75b4e96f2dbf846255e99bd9e11e0fd (diff)
There's an off-by-one in the diagnostic code that can cause grief,
especially for NIC drivers that aren't careful about handling load failures. Bug reported and diff tested by Holger Burde. ok jason@.
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/sparc64/dev/iommu.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/arch/sparc64/dev/iommu.c b/sys/arch/sparc64/dev/iommu.c
index 6e630d3b9a6..09dec097bec 100644
--- a/sys/arch/sparc64/dev/iommu.c
+++ b/sys/arch/sparc64/dev/iommu.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: iommu.c,v 1.28 2003/03/06 08:26:08 henric Exp $ */
+/* $OpenBSD: iommu.c,v 1.29 2003/05/22 21:16:29 henric Exp $ */
/* $NetBSD: iommu.c,v 1.47 2002/02/08 20:03:45 eeh Exp $ */
/*
@@ -1032,7 +1032,7 @@ iommu_dvmamap_append_range(bus_dma_tag_t t, bus_dmamap_t map, paddr_t pa,
sgend = sgstart + length - 1;
#ifdef DIAGNOSTIC
- if (sgstart == NULL || sgstart >= sgend) {
+ if (sgstart == NULL || sgstart > sgend) {
printf("append range invalid mapping for %lx "
"(0x%llx - 0x%llx)\n", pa, sgstart, sgend);
map->dm_nsegs = 0;
@@ -1481,7 +1481,7 @@ iommu_dvmamap_sync_range(struct strbuf_ctl *sb, vaddr_t va, bus_size_t len)
#ifdef DIAGNOSTIC
struct iommu_state *is = sb->sb_iommu;
- if (va < is->is_dvmabase || va >= is->is_dvmaend)
+ if (va < is->is_dvmabase || va > is->is_dvmaend)
panic("invalid va: %llx", (long long)va);
if ((is->is_tsb[IOTSBSLOT(va, is->is_tsbsize)] & IOTTE_STREAM) == 0) {
@@ -1495,7 +1495,7 @@ iommu_dvmamap_sync_range(struct strbuf_ctl *sb, vaddr_t va, bus_size_t len)
va &= ~PAGE_MASK;
#ifdef DIAGNOSTIC
- if (va < is->is_dvmabase || vaend >= is->is_dvmaend)
+ if (va < is->is_dvmabase || vaend > is->is_dvmaend)
panic("invalid va range: %llx to %llx (%x to %x)",
(long long)va, (long long)vaend,
is->is_dvmabase,