/* The resulting memory area is zeroed so it can be mapped to userspace without leaking data.  */
void* vmalloc_user(unsigned long size)
/* The resulting memory area is zeroed so it can be mapped to userspace without leaking data.  */
void* vmalloc_user(unsigned long size)
{
	struct vm_struct *area;
	void *ret;
	ret = __vmalloc_node(size, SHMLBA,
			     GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO,
			     PAGE_KERNEL, -1, __builtin_return_address(0));
	if (ret) {
		area = find_vm_area(ret);
		area->flags |= VM_USERMAP;
	}
	return ret;
}