Page MenuHomeFreeBSD

D19183.id53890.diff
No OneTemporary

D19183.id53890.diff

Index: lib/libkvm/kvm_minidump_amd64.c
===================================================================
--- lib/libkvm/kvm_minidump_amd64.c
+++ lib/libkvm/kvm_minidump_amd64.c
@@ -369,13 +369,17 @@
* that every page here uses the same PDE to
* generate permissions.
*/
- pa = (pde & AMD64_PG_PS_FRAME) +
- ((va & AMD64_PDRMASK) ^ VA_OFF(vm, va));
- dva = vm->hdr.dmapbase + pa;
_kvm_bitmap_set(&bm, pa, AMD64_PAGE_SIZE);
- if (!_kvm_visit_cb(kd, cb, arg, pa, va, dva,
- _amd64_entry_to_prot(pde), AMD64_NBPDR, pgsz)) {
- goto out;
+ for (i = 0; i < AMD64_NBPDR; i += AMD64_PAGE_SIZE){
+ pa = (pde & AMD64_PG_PS_FRAME) +
+ ((va & AMD64_PDRMASK) ^ VA_OFF(vm, va));
+ dva = vm->hdr.dmapbase + pa;
+
+ if (!_kvm_visit_cb(kd, cb, arg, pa, va, dva,
+ _amd64_entry_to_prot(pde), AMD64_PAGE_SIZE, pgsz)) {
+ goto out;
+ }
+ va += AMD64_PAGE_SIZE;
}
continue;
}
Index: lib/libkvm/kvm_private.c
===================================================================
--- lib/libkvm/kvm_private.c
+++ lib/libkvm/kvm_private.c
@@ -723,7 +723,7 @@
int
_kvm_bitmap_next(struct kvm_bitmap *bm, u_long *idx)
{
- u_long first_invalid = bm->size * CHAR_BIT;
+ u_long first_invalid = bm->size * 8;
if (*idx == ULONG_MAX)
*idx = 0;
@@ -732,8 +732,8 @@
/* Find the next valid idx. */
for (; *idx < first_invalid; (*idx)++) {
- unsigned int mask = *idx % CHAR_BIT;
- if ((bm->map[*idx * CHAR_BIT] & mask) == 0)
+ unsigned int mask = (1UL << (*idx % 8));
+ if ((bm->map[*idx / 8] & mask) != 0)
break;
}

File Metadata

Mime Type
text/plain
Expires
Wed, May 20, 9:45 AM (13 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33343237
Default Alt Text
D19183.id53890.diff (1 KB)

Event Timeline