提交 6d79bd5b 编写于 作者: L Liam Mark 提交者: Greg Kroah-Hartman

staging: android: ion: Zero CMA allocated memory

Since commit 204f6722 ("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: 204f6722 ("staging: android: ion: Use CMA APIs directly")
Signed-off-by: NLiam Mark <lmark@codeaurora.org>
Acked-by: NLaura Abbott <labbott@redhat.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 ce8a3a9e
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/err.h> #include <linux/err.h>
#include <linux/cma.h> #include <linux/cma.h>
#include <linux/scatterlist.h> #include <linux/scatterlist.h>
#include <linux/highmem.h>
#include "ion.h" #include "ion.h"
...@@ -42,6 +43,22 @@ static int ion_cma_allocate(struct ion_heap *heap, struct ion_buffer *buffer, ...@@ -42,6 +43,22 @@ static int ion_cma_allocate(struct ion_heap *heap, struct ion_buffer *buffer,
if (!pages) if (!pages)
return -ENOMEM; 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); table = kmalloc(sizeof(*table), GFP_KERNEL);
if (!table) if (!table)
goto err; goto err;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册