Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F154421326
D12279.id33638.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D12279.id33638.diff
View Options
Index: lib/libkvm/kvm.c
===================================================================
--- lib/libkvm/kvm.c
+++ lib/libkvm/kvm.c
@@ -500,5 +500,5 @@
if (kd->arch->ka_walk_pages == NULL)
return (0);
- return kd->arch->ka_walk_pages(kd, cb, closure);
+ return (kd->arch->ka_walk_pages(kd, cb, closure));
}
Index: lib/libkvm/kvm_aarch64.h
===================================================================
--- lib/libkvm/kvm_aarch64.h
+++ lib/libkvm/kvm_aarch64.h
@@ -44,8 +44,8 @@
#define AARCH64_ATTR_MASK 0xfff0000000000fff
#define AARCH64_ATTR_UXN (1UL << 54)
#define AARCH64_ATTR_PXN (1UL << 53)
-#define AARCH64_ATTR_XN (AARCH64_ATTR_PXN | AARCH64_ATTR_UXN)
-#define AARCH64_ATTR_AP(x) ((x) << 6)
+#define AARCH64_ATTR_XN (AARCH64_ATTR_PXN | AARCH64_ATTR_UXN)
+#define AARCH64_ATTR_AP(x) ((x) << 6)
#define AARCH64_ATTR_AP_RO (1 << 1)
#define AARCH64_ATTR_DESCR_MASK 3
Index: lib/libkvm/kvm_arm.h
===================================================================
--- lib/libkvm/kvm_arm.h
+++ lib/libkvm/kvm_arm.h
@@ -53,7 +53,7 @@
#define ARM_L2_S_OFFSET (ARM_L2_S_SIZE - 1)
#define ARM_L2_S_FRAME (~ARM_L2_S_OFFSET)
#define ARM_L2_S_SHIFT 12
-#define ARM_L2_TEX1 0x00000080
+#define ARM_L2_TEX1 0x00000080
#define ARM_PTE2_RO ARM_L2_TEX1
#define ARM_L2_NX 0x00000001
#define ARM_PTE2_NX ARM_L2_NX
Index: lib/libkvm/kvm_minidump_aarch64.c
===================================================================
--- lib/libkvm/kvm_minidump_aarch64.c
+++ lib/libkvm/kvm_minidump_aarch64.c
@@ -122,13 +122,11 @@
aarch64_round_page(vmst->hdr.pmapsize);
if (_kvm_pt_init(kd, vmst->hdr.bitmapsize, off, sparse_off,
AARCH64_PAGE_SIZE, sizeof(uint64_t)) == -1) {
- _kvm_err(kd, kd->program, "cannot load core bitmap");
return (-1);
}
off += aarch64_round_page(vmst->hdr.bitmapsize);
if (_kvm_pmap_init(kd, vmst->hdr.pmapsize, off) == -1) {
- _kvm_err(kd, kd->program, "cannot load page map");
return (-1);
}
off += aarch64_round_page(vmst->hdr.pmapsize);
Index: lib/libkvm/kvm_minidump_amd64.c
===================================================================
--- lib/libkvm/kvm_minidump_amd64.c
+++ lib/libkvm/kvm_minidump_amd64.c
@@ -66,6 +66,11 @@
return prot;
}
+/*
+ * Version 2 minidumps use page directory entries, while version 1 use page
+ * table entries.
+ */
+
static amd64_pde_t
_amd64_pde_get(kvm_t *kd, u_long pdeindex)
{
@@ -157,13 +162,11 @@
amd64_round_page(vmst->hdr.pmapsize);
if (_kvm_pt_init(kd, vmst->hdr.bitmapsize, off, sparse_off,
AMD64_PAGE_SIZE, sizeof(uint64_t)) == -1) {
- _kvm_err(kd, kd->program, "cannot load core bitmap");
return (-1);
}
off += amd64_round_page(vmst->hdr.bitmapsize);
if (_kvm_pmap_init(kd, vmst->hdr.pmapsize, off) == -1) {
- _kvm_err(kd, kd->program, "cannot load page map");
return (-1);
}
off += amd64_round_page(vmst->hdr.pmapsize);
Index: lib/libkvm/kvm_minidump_arm.c
===================================================================
--- lib/libkvm/kvm_minidump_arm.c
+++ lib/libkvm/kvm_minidump_arm.c
@@ -128,13 +128,11 @@
arm_round_page(vmst->hdr.ptesize);
if (_kvm_pt_init(kd, vmst->hdr.bitmapsize, off, sparse_off,
ARM_PAGE_SIZE, sizeof(uint32_t)) == -1) {
- _kvm_err(kd, kd->program, "cannot load core bitmap");
return (-1);
}
off += arm_round_page(vmst->hdr.bitmapsize);
if (_kvm_pmap_init(kd, vmst->hdr.ptesize, off) == -1) {
- _kvm_err(kd, kd->program, "cannot load page map");
return (-1);
}
off += arm_round_page(vmst->hdr.ptesize);
Index: lib/libkvm/kvm_minidump_i386.c
===================================================================
--- lib/libkvm/kvm_minidump_i386.c
+++ lib/libkvm/kvm_minidump_i386.c
@@ -124,13 +124,11 @@
i386_round_page(vmst->hdr.ptesize);
if (_kvm_pt_init(kd, vmst->hdr.bitmapsize, off, sparse_off,
I386_PAGE_SIZE, sizeof(uint32_t)) == -1) {
- _kvm_err(kd, kd->program, "cannot load core bitmap");
return (-1);
}
off += i386_round_page(vmst->hdr.bitmapsize);
if (_kvm_pmap_init(kd, vmst->hdr.ptesize, off) == -1) {
- _kvm_err(kd, kd->program, "cannot load page map");
return (-1);
}
off += i386_round_page(vmst->hdr.ptesize);
Index: lib/libkvm/kvm_minidump_mips.c
===================================================================
--- lib/libkvm/kvm_minidump_mips.c
+++ lib/libkvm/kvm_minidump_mips.c
@@ -127,13 +127,11 @@
mips_round_page(vmst->hdr.ptesize);
if (_kvm_pt_init(kd, vmst->hdr.bitmapsize, off, sparse_off,
MIPS_PAGE_SIZE, sizeof(uint32_t)) == -1) {
- _kvm_err(kd, kd->program, "cannot load core bitmap");
return (-1);
}
off += mips_round_page(vmst->hdr.bitmapsize);
if (_kvm_pmap_init(kd, vmst->hdr.ptesize, off) == -1) {
- _kvm_err(kd, kd->program, "cannot load page map");
return (-1);
}
off += mips_round_page(vmst->hdr.ptesize);
Index: lib/libkvm/kvm_private.c
===================================================================
--- lib/libkvm/kvm_private.c
+++ lib/libkvm/kvm_private.c
@@ -328,8 +328,10 @@
res = map_len;
pc_bins = 1 + (res * NBBY + POPCOUNT_BITS / 2) / POPCOUNT_BITS;
kd->pt_popcounts = calloc(pc_bins, sizeof(uint32_t));
- if (kd->pt_popcounts == NULL)
+ if (kd->pt_popcounts == NULL) {
+ _kvm_err(kd, kd->program, "cannot allocate popcount bins");
return (-1);
+ }
for (popcount_bin = &kd->pt_popcounts[1]; res > 0;
addr++, res -= sizeof(*addr)) {
@@ -356,12 +358,13 @@
* this is much larger than is reasonable to read in up front, so
* mmap it in instead.
*/
- kd->sparse_map = mmap(NULL, kd->pt_sparse_size, PROT_READ, 0,
- kd->pmfd, kd->pt_sparse_off);
+ kd->sparse_map = mmap(NULL, kd->pt_sparse_size, PROT_READ,
+ MAP_PRIVATE, kd->pmfd, kd->pt_sparse_off);
if (kd->sparse_map == MAP_FAILED) {
_kvm_err(kd, kd->program, "cannot map %" PRIu64
- " bytes from offset %ld for sparse map",
- kd->pt_sparse_size, kd->pt_sparse_off);
+ " bytes from fd %d offset %ld for sparse map: %s",
+ kd->pt_sparse_size, kd->pmfd,
+ kd->pt_sparse_off, strerror(errno));
return (-1);
}
return (0);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Apr 29, 10:54 AM (3 h, 24 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
32344431
Default Alt Text
D12279.id33638.diff (5 KB)
Attached To
Mode
D12279: libkvm: add kvm_walk_pages API.
Attached
Detach File
Event Timeline
Log In to Comment