On Thu, May 16, 2024 at 08:20:41PM +0800, Yunfei Dong wrote: > From: Jeffrey Kardatzke <jkardatzke@xxxxxxxxxx> > > Verfies in the dmabuf implementations that if the restricted memory > flag is set for a queue that the dmabuf submitted to the queue is > unmappable. > > Signed-off-by: Jeffrey Kardatzke <jkardatzke@xxxxxxxxxx> > Signed-off-by: Yunfei Dong <yunfei.dong@xxxxxxxxxxxx> > --- > drivers/media/common/videobuf2/videobuf2-dma-contig.c | 8 ++++++++ > drivers/media/common/videobuf2/videobuf2-dma-sg.c | 8 ++++++++ > 2 files changed, 16 insertions(+) > > diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c > index 3d4fd4ef5310..35a3c1c01eae 100644 > --- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c > +++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c > @@ -710,6 +710,14 @@ static int vb2_dc_map_dmabuf(void *mem_priv) > return -EINVAL; > } > > + /* Verify the dmabuf is restricted if we are in restricted mode, this is done > + * by validating there is no page entry for the dmabuf. > + */ Kernel coding style [1] defines multi-line comments to start with an empty line. [1] https://www.kernel.org/doc/html/latest/process/coding-style.html#commenting > + if (buf->vb->vb2_queue->restricted_mem && !sg_dma_is_restricted(sgt->sgl)) { > + pr_err("restricted queue requires restricted dma_buf"); > + return -EINVAL; This would leak the mapping. We need to unmap the attachment here. > + } > + > /* checking if dmabuf is big enough to store contiguous chunk */ > contig_size = vb2_dc_get_contiguous_size(sgt); > if (contig_size < buf->size) { > diff --git a/drivers/media/common/videobuf2/videobuf2-dma-sg.c b/drivers/media/common/videobuf2/videobuf2-dma-sg.c > index 6975a71d740f..2399a9c074ba 100644 > --- a/drivers/media/common/videobuf2/videobuf2-dma-sg.c > +++ b/drivers/media/common/videobuf2/videobuf2-dma-sg.c > @@ -570,6 +570,14 @@ static int vb2_dma_sg_map_dmabuf(void *mem_priv) > return -EINVAL; > } > > + /* Verify the dmabuf is restricted if we are in restricted mode, this is done > + * by validating there is no page entry for the dmabuf. > + */ Ditto. > + if (buf->vb->vb2_queue->restricted_mem && !sg_dma_is_restricted(sgt->sgl)) { > + pr_err("restricted queue requires restricted dma_buf"); > + return -EINVAL; Ditto. Best regards, Tomasz > + } > + > buf->dma_sgt = sgt; > buf->vaddr = NULL; > > -- > 2.25.1 >