[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 5/6] libpager: Fix overallocating pagemap
From: |
Sergey Bugaev |
Subject: |
[PATCH 5/6] libpager: Fix overallocating pagemap |
Date: |
Thu, 6 May 2021 15:56:30 +0300 |
The code tried to round up the allocation size to a multiple of page size.
But we actually allocate newsize * sizeof (*p->pagemap) bytes, not newsize
bytes, which meant allocations were sizeof (*p->pagemap) times larger than
they needed to be.
---
libpager/pagemap.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/libpager/pagemap.c b/libpager/pagemap.c
index 63c5f44d..1570c75b 100644
--- a/libpager/pagemap.c
+++ b/libpager/pagemap.c
@@ -17,21 +17,22 @@
#include "priv.h"
#include <string.h>
-
+
/* Grow the pagemap of pager P as necessary to deal with address OFF */
error_t
_pager_pagemap_resize (struct pager *p, vm_address_t off)
{
error_t err = 0;
-
+
off /= __vm_page_size;
if (p->pagemapsize < off)
{
void *newaddr;
- vm_size_t newsize = round_page (off);
+ vm_size_t newsize = round_page (off * sizeof (*p->pagemap))
+ / sizeof (*p->pagemap);
- newaddr = mmap (0, newsize * sizeof (*p->pagemap),
+ newaddr = mmap (0, newsize * sizeof (*p->pagemap),
PROT_READ|PROT_WRITE, MAP_ANON, 0, 0);
err = (newaddr == (void *) -1) ? errno : 0;
if (! err)
--
2.31.1
- Re: [PATCH 1/6] libpager: Fix mixing up success and error, (continued)
- [PATCH 2/6] libpager: Do not flush in-core pages on offer, Sergey Bugaev, 2021/05/06
- [PATCH 4/6] libpager: Store pagemapsize as vm_size_t, Sergey Bugaev, 2021/05/06
- [PATCH 6/6] libpager: Use libc heap for pagemap, Sergey Bugaev, 2021/05/06
- [PATCH 3/6] libpager: Add error handling to various functions, Sergey Bugaev, 2021/05/06
- [PATCH 5/6] libpager: Fix overallocating pagemap,
Sergey Bugaev <=
- And another patch..., Sergey Bugaev, 2021/05/06
- Re: And another patch..., Samuel Thibault, 2021/05/08
- Re: And another patch..., Sergey Bugaev, 2021/05/08
- [PATCH 0/4] _pager_do_write_request fixes, Sergey Bugaev, 2021/05/08
- [PATCH 3/4] libpager: Track which pages are precious, Sergey Bugaev, 2021/05/08
- [PATCH 4/4] libpager: Do not throw away precious pages, Sergey Bugaev, 2021/05/08
- [PATCH 2/4] libpager: Store omit_data in an array, Sergey Bugaev, 2021/05/08
- [PATCH 1/4] libpager: pager_write_page () should not unmap page, Sergey Bugaev, 2021/05/08
- Re: [PATCH 1/4] libpager: pager_write_page () should not unmap page, Samuel Thibault, 2021/05/08