mirror of
https://github.com/opnsense/src.git
synced 2026-06-09 08:43:19 -04:00
Teach vm.pmap.kernel_maps about both XN bits
The arm64 vm.pmap.kernel_maps sysctl would only check the kernel XN bit when printing the kernel mapping. It can also be useful to check none of the mappings allow userspace to execute from a given virtual address. To check for this add the user XN bit when getting the kernel maps. While here fix the ATTR_S1_AP_USER check to use ATTR_S1_AP to shift the value to the correct offset. Reviewed by: kib (earlier version), markj Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D33304
This commit is contained in:
parent
03f0393477
commit
38dbca7243
1 changed files with 3 additions and 2 deletions
|
|
@ -7000,11 +7000,12 @@ sysctl_kmaps_dump(struct sbuf *sb, struct pmap_kernel_map_range *range,
|
|||
break;
|
||||
}
|
||||
|
||||
sbuf_printf(sb, "0x%016lx-0x%016lx r%c%c%c %3s %d %d %d %d\n",
|
||||
sbuf_printf(sb, "0x%016lx-0x%016lx r%c%c%c%c %3s %d %d %d %d\n",
|
||||
range->sva, eva,
|
||||
(range->attrs & ATTR_S1_AP_RW_BIT) == ATTR_S1_AP_RW ? 'w' : '-',
|
||||
(range->attrs & ATTR_S1_PXN) != 0 ? '-' : 'x',
|
||||
(range->attrs & ATTR_S1_AP_USER) != 0 ? 'u' : 's',
|
||||
(range->attrs & ATTR_S1_UXN) != 0 ? '-' : 'X',
|
||||
(range->attrs & ATTR_S1_AP(ATTR_S1_AP_USER)) != 0 ? 'u' : 's',
|
||||
mode, range->l1blocks, range->l2blocks, range->l3contig,
|
||||
range->l3pages);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue