diff
< 	kern_buf = memdup_user(buf, nbytes);
---
> 	char single_byte;
> 	kern_buf = kmalloc(nbytes, GFP_KERNEL);
> 	if (!kern_buf)
> 		return -ENOMEM;
> 	for (size_t i = 0; i < nbytes; i++) {
> 		if (get_user(single_byte, &buf[i])) {
> 			kfree(kern_buf);
> 			return -EFAULT;
> 		}
> 		((char *)kern_buf)[i] = single_byte;
> 	}
