Page MenuHomeFreeBSD

D45732.id140229.diff
No OneTemporary

D45732.id140229.diff

diff --git a/sys/arm/arm/busdma_machdep.c b/sys/arm/arm/busdma_machdep.c
--- a/sys/arm/arm/busdma_machdep.c
+++ b/sys/arm/arm/busdma_machdep.c
@@ -1035,7 +1035,7 @@
segp))
break;
vaddr += sgsize;
- buflen -= sgsize;
+ buflen -= MIN(sgsize, buflen); /* avoid underflow */
}
cleanup:
diff --git a/sys/arm64/arm64/busdma_bounce.c b/sys/arm64/arm64/busdma_bounce.c
--- a/sys/arm64/arm64/busdma_bounce.c
+++ b/sys/arm64/arm64/busdma_bounce.c
@@ -898,7 +898,7 @@
segp))
break;
vaddr += sgsize;
- buflen -= sgsize;
+ buflen -= MIN(sgsize, buflen); /* avoid underflow */
}
/*
diff --git a/sys/powerpc/powerpc/busdma_machdep.c b/sys/powerpc/powerpc/busdma_machdep.c
--- a/sys/powerpc/powerpc/busdma_machdep.c
+++ b/sys/powerpc/powerpc/busdma_machdep.c
@@ -656,7 +656,7 @@
segp))
break;
vaddr += sgsize;
- buflen -= sgsize;
+ buflen -= MIN(sgsize, buflen); /* avoid underflow */
}
/*
diff --git a/sys/riscv/riscv/busdma_bounce.c b/sys/riscv/riscv/busdma_bounce.c
--- a/sys/riscv/riscv/busdma_bounce.c
+++ b/sys/riscv/riscv/busdma_bounce.c
@@ -705,7 +705,7 @@
segp))
break;
vaddr += sgsize;
- buflen -= sgsize;
+ buflen -= MIN(sgsize, buflen); /* avoid underflow */
}
cleanup:
diff --git a/sys/x86/x86/busdma_bounce.c b/sys/x86/x86/busdma_bounce.c
--- a/sys/x86/x86/busdma_bounce.c
+++ b/sys/x86/x86/busdma_bounce.c
@@ -733,7 +733,7 @@
segp))
break;
vaddr += sgsize;
- buflen -= sgsize;
+ buflen -= MIN(sgsize, buflen); /* avoid underflow */
}
/*
@@ -808,7 +808,7 @@
break;
KASSERT(buflen >= sgsize,
("Segment length overruns original buffer"));
- buflen -= sgsize;
+ buflen -= MIN(sgsize, buflen); /* avoid underflow */
if (((ma_offs + sgsize) & ~PAGE_MASK) != 0)
page_index++;
ma_offs = (ma_offs + sgsize) & PAGE_MASK;

File Metadata

Mime Type
text/plain
Expires
Sat, Sep 12, 6:21 AM (4 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38773304
Default Alt Text
D45732.id140229.diff (1 KB)

Event Timeline