Page MenuHomeFreeBSD

D4030.id9803.diff
No OneTemporary

D4030.id9803.diff

Index: head/sys/amd64/amd64/pmap.c
===================================================================
--- head/sys/amd64/amd64/pmap.c
+++ head/sys/amd64/amd64/pmap.c
@@ -6411,7 +6411,7 @@
*/
for (tmpva = base; tmpva < base + size; ) {
pdpe = pmap_pdpe(kernel_pmap, tmpva);
- if (*pdpe == 0)
+ if (pdpe == NULL || *pdpe == 0)
return (EINVAL);
if (*pdpe & PG_PS) {
/*
@@ -6484,7 +6484,8 @@
X86_PG_PDE_CACHE);
changed = TRUE;
}
- if (tmpva >= VM_MIN_KERNEL_ADDRESS) {
+ if (tmpva >= VM_MIN_KERNEL_ADDRESS &&
+ (*pdpe & PG_PS_FRAME) < dmaplimit) {
if (pa_start == pa_end) {
/* Start physical address run. */
pa_start = *pdpe & PG_PS_FRAME;
@@ -6513,7 +6514,8 @@
X86_PG_PDE_CACHE);
changed = TRUE;
}
- if (tmpva >= VM_MIN_KERNEL_ADDRESS) {
+ if (tmpva >= VM_MIN_KERNEL_ADDRESS &&
+ (*pde & PG_PS_FRAME) < dmaplimit) {
if (pa_start == pa_end) {
/* Start physical address run. */
pa_start = *pde & PG_PS_FRAME;
@@ -6540,7 +6542,8 @@
X86_PG_PTE_CACHE);
changed = TRUE;
}
- if (tmpva >= VM_MIN_KERNEL_ADDRESS) {
+ if (tmpva >= VM_MIN_KERNEL_ADDRESS &&
+ (*pte & PG_PS_FRAME) < dmaplimit) {
if (pa_start == pa_end) {
/* Start physical address run. */
pa_start = *pte & PG_FRAME;

File Metadata

Mime Type
text/plain
Expires
Sun, Jan 19, 9:28 AM (10 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15938007
Default Alt Text
D4030.id9803.diff (1 KB)

Event Timeline