diff options
| -rw-r--r-- | drivers/virt/fsl_hypervisor.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/virt/fsl_hypervisor.c b/drivers/virt/fsl_hypervisor.c index a41431edbf25..93d5bebf9572 100644 --- a/drivers/virt/fsl_hypervisor.c +++ b/drivers/virt/fsl_hypervisor.c | |||
| @@ -215,6 +215,9 @@ static long ioctl_memcpy(struct fsl_hv_ioctl_memcpy __user *p) | |||
| 215 | * hypervisor. | 215 | * hypervisor. |
| 216 | */ | 216 | */ |
| 217 | lb_offset = param.local_vaddr & (PAGE_SIZE - 1); | 217 | lb_offset = param.local_vaddr & (PAGE_SIZE - 1); |
| 218 | if (param.count == 0 || | ||
| 219 | param.count > U64_MAX - lb_offset - PAGE_SIZE + 1) | ||
| 220 | return -EINVAL; | ||
| 218 | num_pages = (param.count + lb_offset + PAGE_SIZE - 1) >> PAGE_SHIFT; | 221 | num_pages = (param.count + lb_offset + PAGE_SIZE - 1) >> PAGE_SHIFT; |
| 219 | 222 | ||
| 220 | /* Allocate the buffers we need */ | 223 | /* Allocate the buffers we need */ |
