media: atomisp: Ensure that USERPTR pointers are page aligned

The atomisp code needs USERPTR pointers to be page aligned,
otherwise bad things (scribbling over other parts of the
process' RAM) happen.

Add a check to ensure this and exit VIDIOC_QBUF calls with
unaligned pointers with -EINVAL.

Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
Hans de Goede 2022-08-21 20:29:06 +02:00 committed by Mauro Carvalho Chehab
parent 30cf7e90f0
commit 6e6c4ae0f0
1 changed files with 6 additions and 0 deletions

View File

@ -1345,6 +1345,12 @@ static int atomisp_qbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
* address and reprograme out page table properly
*/
if (buf->memory == V4L2_MEMORY_USERPTR) {
if (offset_in_page(buf->m.userptr)) {
dev_err(isp->dev, "Error userptr is not page aligned.\n");
ret = -EINVAL;
goto error;
}
vb = pipe->capq.bufs[buf->index];
vm_mem = vb->priv;
if (!vm_mem) {