Don't count vm_map_ram as used memory in vmallocinfo.

Bug: 28378463
Change-Id: I1f22464dbd31bc9ee7f2307ce7eec4a0e2bbad06
diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp
index f870a89..e0bfecb 100644
--- a/core/jni/android_os_Debug.cpp
+++ b/core/jni/android_os_Debug.cpp
@@ -597,6 +597,13 @@
 
 static long get_allocated_vmalloc_memory() {
     char line[1024];
+    // Ignored tags that don't actually consume memory (ie remappings)
+    static const char* const ignored_tags[] = {
+            "ioremap",
+            "map_lowmem",
+            "vm_map_ram",
+            NULL
+    };
     long size, vmalloc_allocated_size = 0;
     FILE* fp = fopen("/proc/vmallocinfo", "r");
     if (fp == NULL) {
@@ -606,12 +613,17 @@
         if (fgets(line, 1024, fp) == NULL) {
             break;
         }
-
-        if (!strstr(line, "ioremap") && !strstr(line, "map_lowmem")) {
-            // Ignore ioremap and map_lowmem regions, since they don't actually consume memory
-            if (sscanf(line, "%*x-%*x %ld", &size) == 1) {
-                vmalloc_allocated_size += size;
+        bool valid_line = true;
+        int i = 0;
+        while (ignored_tags[i]) {
+            if (strstr(line, ignored_tags[i]) != NULL) {
+                valid_line = false;
+                break;
             }
+            i++;
+        }
+        if (valid_line && (sscanf(line, "%*x-%*x %ld", &size) == 1)) {
+            vmalloc_allocated_size += size;
         }
     }
     fclose(fp);