ion: Consider ion pool pages as indirectly reclaimable
authorVijayanand Jitta <vjitta@codeaurora.org>
Wed, 25 Apr 2018 03:24:47 +0000 (08:54 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 May 2018 01:49:59 +0000 (18:49 -0700)
An issue is observed where mallocs are failing due to overcommit failure.
The failure happens when there is high ION page pool since ION page
pool is not considered reclaimable by the overcommit calculation code.
This change considers ion pool pages as indirectly reclaimable and thus
accounted as available memory in the overcommit calculation.

Signed-off-by: Vijayanand Jitta <vjitta@codeaurora.org>
Acked-by: Laura Abbott <labbott@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/android/ion/ion_page_pool.c

index db8f61446917c477ed94e3a3bc9f6b949b0f4153..9bc56eb48d2a894c2f3d760b8b129813d18b5177 100644 (file)
@@ -32,6 +32,9 @@ static void ion_page_pool_add(struct ion_page_pool *pool, struct page *page)
                list_add_tail(&page->lru, &pool->low_items);
                pool->low_count++;
        }
+
+       mod_node_page_state(page_pgdat(page), NR_INDIRECTLY_RECLAIMABLE_BYTES,
+                           (1 << (PAGE_SHIFT + pool->order)));
        mutex_unlock(&pool->mutex);
 }
 
@@ -50,6 +53,8 @@ static struct page *ion_page_pool_remove(struct ion_page_pool *pool, bool high)
        }
 
        list_del(&page->lru);
+       mod_node_page_state(page_pgdat(page), NR_INDIRECTLY_RECLAIMABLE_BYTES,
+                           -(1 << (PAGE_SHIFT + pool->order)));
        return page;
 }