From 9369164f45ba19519158286590aaefae1c64ef05 Mon Sep 17 00:00:00 2001 From: William Brown Date: Thu, 5 Oct 2017 09:54:48 +1000 Subject: [PATCH] Ticket 49392 - memavailable not available Bug Description: On certain linux platforms memAvailable is not actually available! This means that the value was 0, so cgroup max was read instead, setting the system ram to: 9223372036854771712 That's a bit excessive, and can cause memory allocations to fail. Fix Description: If memavail can't be found, fall back to memtotal instead. https://pagure.io/389-ds-base/issue/49392 Author: wibrown Review by: mreynolds (Thanks!) --- ldap/servers/slapd/slapi_pal.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ldap/servers/slapd/slapi_pal.c b/ldap/servers/slapd/slapi_pal.c index 38c178cfa..600d03d4d 100644 --- a/ldap/servers/slapd/slapi_pal.c +++ b/ldap/servers/slapd/slapi_pal.c @@ -155,7 +155,16 @@ spal_meminfo_get() /* Both memtotal and memavail are in kb */ memtotal = memtotal * 1024; - memavail = memavail * 1024; + + /* + * Oracle Enterprise Linux doesn't provide a valid memavail value, so fall + * back to 80% of memtotal. + */ + if (memavail == 0) { + memavail = memtotal * 0.8; + } else { + memavail = memavail * 1024; + } /* If it's possible, get our cgroup info */ uint64_t cg_mem_soft = 0; -- 2.13.6