aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2023-07-26 19:10:58 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2023-07-26 19:10:58 +0300
commit9e2242a8e6f8eaf76a49f68b3ced64d6ba35047d (patch)
treec74f5c2c9ecb2254fe79d01782dbafea586f1eef /common
parent1cc2a1f4b044df8f0d244f1940a5701d1100ddc5 (diff)
downloadkmi-9e2242a8e6f8eaf76a49f68b3ced64d6ba35047d.tar.gz
kmi-9e2242a8e6f8eaf76a49f68b3ced64d6ba35047d.zip
fix possible segfault with non-gig memory sizes
Diffstat (limited to 'common')
-rw-r--r--common/pmem.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/common/pmem.c b/common/pmem.c
index 80599ef..8169b88 100644
--- a/common/pmem.c
+++ b/common/pmem.c
@@ -199,6 +199,10 @@ static void __mark_bucket_page_free(struct mm_bucket *bucket,
enum mm_order iter = bucket->order;
reverse_foreach_order_init(iter) {
+ struct mm_branch *tree = bucket->tree[iter];
+ if (!tree)
+ continue;
+
__mark_free(bucket->tree[iter], fixup_addr,
order, bucket->order, iter);
}
@@ -272,6 +276,10 @@ static void __mark_bucket_page_used(struct mm_bucket *bucket,
{
pm_t fixed_addr = addr - bucket->base;
reverse_foreach_order(iter) {
+ struct mm_branch *tree = bucket->tree[iter];
+ if (!tree)
+ continue;
+
__mark_used(bucket->tree[iter], fixed_addr,
order, bucket->order, iter);
}