
+ 	char kernel_buffer[PAGE_SIZE];
< 	buffer = vmemdup_user(buf, lbuf);
---
> 	if (lbuf > sizeof(kernel_buffer))
> 		return -EINVAL;
> 	if (copy_from_user(kernel_buffer, buf, lbuf))
> 		return -EFAULT;
> 	buffer = kmemdup(kernel_buffer, lbuf, GFP_KERNEL);
> 	if (!buffer)
> 		return -ENOMEM;
