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