Skip to content

Commit

Permalink
staging: android: ion: Zero CMA allocated memory
Browse files Browse the repository at this point in the history
Since commit 204f672 ("staging: android: ion: Use CMA APIs directly")
the CMA API is now used directly and therefore the allocated memory is no
longer automatically zeroed.

Explicitly zero CMA allocated memory to ensure that no data is exposed to
userspace.

Fixes: 204f672 ("staging: android: ion: Use CMA APIs directly")
Signed-off-by: Liam Mark <lmark@codeaurora.org>
Acked-by: Laura Abbott <labbott@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Liam Mark authored and Greg Kroah-Hartman committed Feb 16, 2018
1 parent ce8a3a9 commit 6d79bd5
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions drivers/staging/android/ion/ion_cma_heap.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <linux/err.h>
#include <linux/cma.h>
#include <linux/scatterlist.h>
#include <linux/highmem.h>

#include "ion.h"

Expand Down Expand Up @@ -42,6 +43,22 @@ static int ion_cma_allocate(struct ion_heap *heap, struct ion_buffer *buffer,
if (!pages)
return -ENOMEM;

if (PageHighMem(pages)) {
unsigned long nr_clear_pages = nr_pages;
struct page *page = pages;

while (nr_clear_pages > 0) {
void *vaddr = kmap_atomic(page);

memset(vaddr, 0, PAGE_SIZE);
kunmap_atomic(vaddr);
page++;
nr_clear_pages--;
}
} else {
memset(page_address(pages), 0, size);
}

table = kmalloc(sizeof(*table), GFP_KERNEL);
if (!table)
goto err;
Expand Down

0 comments on commit 6d79bd5

Please sign in to comment.