From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Tomasz Stanislawski <t.stanislaws@samsung.com>
Cc: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org,
airlied@redhat.com, m.szyprowski@samsung.com,
kyungmin.park@samsung.com, sumit.semwal@ti.com,
daeinki@gmail.com, daniel.vetter@ffwll.ch, robdclark@gmail.com,
pawel@osciak.com, linaro-mm-sig@lists.linaro.org,
hverkuil@xs4all.nl, remi@remlab.net, subashrp@gmail.com,
mchehab@redhat.com, g.liakhovetski@gmx.de, dmitriyz@google.com,
s.nawrocki@samsung.com, k.debski@samsung.com
Subject: Re: [PATCHv8 21/26] v4l: vb2-dma-contig: add reference counting for a device from allocator context
Date: Wed, 15 Aug 2012 22:04:02 +0200 [thread overview]
Message-ID: <10699580.p7WLNaRi24@avalon> (raw)
In-Reply-To: <1344958496-9373-22-git-send-email-t.stanislaws@samsung.com>
Hi Tomasz,
Thanks for the patch.
On Tuesday 14 August 2012 17:34:51 Tomasz Stanislawski wrote:
> This patch adds taking reference to the device for MMAP buffers.
>
> Such buffers, may be exported using DMABUF mechanism. If the driver that
> created a queue is unloaded then the queue is released, the device might be
> released too. However, buffers cannot be released if they are referenced by
> DMABUF descriptor(s). The device pointer kept in a buffer must be valid for
> the whole buffer's lifetime. Therefore MMAP buffers should take a reference
> to the device to avoid risk of dangling pointers.
That patch looks good, but that approach won't scale if we ever need a more
complex context that can't be copied. We can ignore that for now, but if we
decide to support "orphan" vb2 buffers, that's an issue we need to be aware of
as it might come back to bite us in the future.
I assume that this patch requires your dmabuf owner patch to fix the orphan
buffer case properly.
> Signed-off-by: Tomasz Stanislawski <t.stanislaws@samsung.com>
> ---
> drivers/media/video/videobuf2-dma-contig.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/media/video/videobuf2-dma-contig.c
> b/drivers/media/video/videobuf2-dma-contig.c index bb2b4ac8..d44766e 100644
> --- a/drivers/media/video/videobuf2-dma-contig.c
> +++ b/drivers/media/video/videobuf2-dma-contig.c
> @@ -148,6 +148,7 @@ static void vb2_dc_put(void *buf_priv)
> kfree(buf->sgt_base);
> }
> dma_free_coherent(buf->dev, buf->size, buf->vaddr, buf->dma_addr);
> + put_device(buf->dev);
> kfree(buf);
> }
>
> @@ -161,9 +162,13 @@ static void *vb2_dc_alloc(void *alloc_ctx, unsigned
> long size) if (!buf)
> return ERR_PTR(-ENOMEM);
>
> + /* prevent the device from release while the buffer is exported */
> + get_device(dev);
> +
> buf->vaddr = dma_alloc_coherent(dev, size, &buf->dma_addr, GFP_KERNEL);
> if (!buf->vaddr) {
> dev_err(dev, "dma_alloc_coherent of size %ld failed\n", size);
> + put_device(dev);
> kfree(buf);
> return ERR_PTR(-ENOMEM);
> }
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2012-08-15 20:03 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-14 15:34 [PATCHv8 00/26] Integration of videobuf2 with DMABUF Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 01/26] v4l: Add DMABUF as a memory type Tomasz Stanislawski
2012-08-22 10:27 ` Hans Verkuil
2012-08-22 12:09 ` Tomasz Stanislawski
2012-08-22 12:21 ` Hans Verkuil
2012-08-14 15:34 ` [PATCHv8 02/26] Documentation: media: description of DMABUF importing in V4L2 Tomasz Stanislawski
2012-08-22 10:47 ` Hans Verkuil
2012-09-24 12:17 ` Tomasz Stanislawski
2012-09-25 10:48 ` Hans Verkuil
2012-08-14 15:34 ` [PATCHv8 03/26] v4l: vb2: add support for shared buffer (dma_buf) Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 04/26] v4l: vb: remove warnings about MEMORY_DMABUF Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 05/26] v4l: vb2-dma-contig: Shorten vb2_dma_contig prefix to vb2_dc Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 06/26] v4l: vb2-dma-contig: remove reference of alloc_ctx from a buffer Tomasz Stanislawski
2012-08-15 18:24 ` Laurent Pinchart
2012-08-14 15:34 ` [PATCHv8 07/26] v4l: vb2-dma-contig: Reorder functions Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 08/26] v4l: vb2-dma-contig: add support for scatterlist in userptr mode Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 09/26] v4l: vb2: add prepare/finish callbacks to allocators Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 10/26] v4l: vb2-dma-contig: add prepare/finish to dma-contig allocator Tomasz Stanislawski
2012-08-15 18:35 ` Laurent Pinchart
2012-08-15 18:39 ` [Linaro-mm-sig] " Laurent Pinchart
2012-08-14 15:34 ` [PATCHv8 11/26] v4l: vb2-dma-contig: add support for dma_buf importing Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 12/26] v4l: vb2-vmalloc: add support for dmabuf importing Tomasz Stanislawski
2012-08-15 18:39 ` Laurent Pinchart
2012-08-14 15:34 ` [PATCHv8 13/26] v4l: vivi: " Tomasz Stanislawski
2012-08-22 10:56 ` Hans Verkuil
2012-08-22 11:03 ` Laurent Pinchart
2012-08-22 11:47 ` Hans Verkuil
2012-09-25 14:41 ` Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 14/26] v4l: s5p-tv: mixer: " Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 15/26] v4l: s5p-fimc: " Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 16/26] v4l: vb2-dma-contig: let mmap method to use dma_mmap_coherent call Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 17/26] Documentation: media: description of DMABUF exporting in V4L2 Tomasz Stanislawski
2012-08-22 11:23 ` Hans Verkuil
2012-08-14 15:34 ` [PATCHv8 18/26] v4l: add buffer exporting via dmabuf Tomasz Stanislawski
2012-08-15 19:08 ` Laurent Pinchart
2012-08-22 11:41 ` Hans Verkuil
2012-08-22 23:39 ` Laurent Pinchart
2012-08-23 6:50 ` Hans Verkuil
2012-09-25 16:30 ` Tomasz Stanislawski
2012-09-26 6:39 ` Hans Verkuil
2012-09-26 9:55 ` Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 19/26] v4l: vb2: " Tomasz Stanislawski
2012-08-22 11:43 ` Hans Verkuil
2012-08-14 15:34 ` [PATCHv8 20/26] v4l: vb2-dma-contig: add support for DMABUF exporting Tomasz Stanislawski
2012-08-21 10:03 ` Laurent Pinchart
2012-08-21 13:47 ` Tomasz Stanislawski
2012-08-21 14:07 ` Laurent Pinchart
2012-08-14 15:34 ` [PATCHv8 21/26] v4l: vb2-dma-contig: add reference counting for a device from allocator context Tomasz Stanislawski
2012-08-15 20:04 ` Laurent Pinchart [this message]
2012-08-14 15:34 ` [PATCHv8 22/26] media: vb2: fail if user ptr buffer is not correctly aligned Tomasz Stanislawski
2012-08-15 20:20 ` Laurent Pinchart
2012-08-14 15:34 ` [PATCHv8 23/26] v4l: vb2: add support for DMA_ATTR_NO_KERNEL_MAPPING Tomasz Stanislawski
2012-08-15 20:44 ` Laurent Pinchart
2012-08-22 11:46 ` Hans Verkuil
2012-08-14 15:34 ` [PATCHv8 24/26] v4l: s5p-fimc: support for dmabuf exporting Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 25/26] v4l: s5p-tv: mixer: " Tomasz Stanislawski
2012-08-14 15:34 ` [PATCHv8 26/26] v4l: s5p-mfc: " Tomasz Stanislawski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=10699580.p7WLNaRi24@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=airlied@redhat.com \
--cc=daeinki@gmail.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dmitriyz@google.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=g.liakhovetski@gmx.de \
--cc=hverkuil@xs4all.nl \
--cc=k.debski@samsung.com \
--cc=kyungmin.park@samsung.com \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-media@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=mchehab@redhat.com \
--cc=pawel@osciak.com \
--cc=remi@remlab.net \
--cc=robdclark@gmail.com \
--cc=s.nawrocki@samsung.com \
--cc=subashrp@gmail.com \
--cc=sumit.semwal@ti.com \
--cc=t.stanislaws@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).