pg_buffercache: Fix memory allocation formula

The code over-allocated the memory required for os_page_status, relying
on uint64 for its element size instead of an int, hence doubling what
was required.  This could mean quite a lot of memory if dealing with a
lot of NUMA pages.

Oversight in ba2a3c2302.

Author: David Geier <geidav.pg@gmail.com>
Discussion: https://postgr.es/m/ad0748d4-3080-436e-b0bc-ac8f86a3466a@gmail.com
Backpatch-through: 18
REL_18_STABLE
Michael Paquier 7 days ago
parent 5b7bbf16db
commit 580b5c2f39
  1. 2
      contrib/pg_buffercache/pg_buffercache_pages.c

@ -366,7 +366,7 @@ pg_buffercache_numa_pages(PG_FUNCTION_ARGS)
/* Used to determine the NUMA node for all OS pages at once */ /* Used to determine the NUMA node for all OS pages at once */
os_page_ptrs = palloc0(sizeof(void *) * os_page_count); os_page_ptrs = palloc0(sizeof(void *) * os_page_count);
os_page_status = palloc(sizeof(uint64) * os_page_count); os_page_status = palloc(sizeof(int) * os_page_count);
/* Fill pointers for all the memory pages. */ /* Fill pointers for all the memory pages. */
idx = 0; idx = 0;

Loading…
Cancel
Save