git: 941747f63cfa - stable/12 - Fix divide-by-zero panic when ASLR is enabled and superpages disabled
Jason A. Harmening
jah at FreeBSD.org
Wed Feb 24 00:02:03 UTC 2021
The branch stable/12 has been updated by jah:
URL: https://cgit.FreeBSD.org/src/commit/?id=941747f63cfa127248e6c7246f75c5ac5e142fcc
commit 941747f63cfa127248e6c7246f75c5ac5e142fcc
Author: Jason A. Harmening <jah at FreeBSD.org>
AuthorDate: 2021-02-15 02:47:22 +0000
Commit: Jason A. Harmening <jah at FreeBSD.org>
CommitDate: 2021-02-24 00:04:00 +0000
Fix divide-by-zero panic when ASLR is enabled and superpages disabled
When locating the anonymous memory region for a vm_map with ASLR
enabled, we try to keep the slid base address aligned on a superpage
boundary to minimize pagetable fragmentation and maximize the potential
usage of superpage mappings. We can't (portably) do this if superpages
have been disabled by loader tunable and pagesizes[1] is 0, and it
would be less beneficial in that case anyway.
PR: 253511
(cherry picked from commit 41032835dc2d489ec7841d7529f74f6389329cd3)
---
sys/kern/imgact_elf.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c
index 18b83d6b499a..4c05be66e51f 100644
--- a/sys/kern/imgact_elf.c
+++ b/sys/kern/imgact_elf.c
@@ -1271,7 +1271,8 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *imgp)
maxv1 = maxv / 2 + addr / 2;
MPASS(maxv1 >= addr); /* No overflow */
map->anon_loc = __CONCAT(rnd_, __elfN(base))(map, addr, maxv1,
- MAXPAGESIZES > 1 ? pagesizes[1] : pagesizes[0]);
+ (MAXPAGESIZES > 1 && pagesizes[1] != 0) ?
+ pagesizes[1] : pagesizes[0]);
} else {
map->anon_loc = addr;
}
@@ -1281,7 +1282,7 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *imgp)
if (interp != NULL) {
VOP_UNLOCK(imgp->vp, 0);
if ((map->flags & MAP_ASLR) != 0) {
- /* Assume that interpeter fits into 1/4 of AS */
+ /* Assume that interpreter fits into 1/4 of AS */
maxv1 = maxv / 2 + addr / 2;
MPASS(maxv1 >= addr); /* No overflow */
addr = __CONCAT(rnd_, __elfN(base))(map, addr,
More information about the dev-commits-src-all
mailing list