From patchwork Wed Oct 10 14:46:40 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomasz Stanislawski X-Patchwork-Id: 12130 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id 5248A23EFB for ; Wed, 10 Oct 2012 15:01:49 +0000 (UTC) Received: from mail-ia0-f180.google.com (mail-ia0-f180.google.com [209.85.210.180]) by fiordland.canonical.com (Postfix) with ESMTP id 2A006A190D1 for ; Wed, 10 Oct 2012 15:01:47 +0000 (UTC) Received: by mail-ia0-f180.google.com with SMTP id f6so425639iag.11 for ; Wed, 10 Oct 2012 08:01:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-forwarded-to:x-forwarded-for:delivered-to:received-spf:x-auditid :from:to:date:message-id:x-mailer:in-reply-to:references :x-brightmail-tracker:cc:subject:x-beenthere:x-mailman-version :precedence:list-id:list-unsubscribe:list-archive:list-post :list-help:list-subscribe:mime-version:content-type :content-transfer-encoding:sender:errors-to:x-gm-message-state; bh=o6uxOoHQTdVm7tX8X53nwqnpsPNufJrCxuFcIrcQOwc=; b=T0ClSbe13xyK/t0St3xgvMnBoCWiH04oV2bnQvjd3FkXpiMmPi7RVEjOs9C2s3/d1s VGEJHfjeVOw9I8J5xvcZq3iCkosMrw2d6DDFHgLb4ZDtw3dwZoRMebaLZ6w3SrhxlM2c TfiLh9YK3t/cJ+tfgDhp7mElxKXv2rP3z5tVR4VhevA0wkybkg4/bz3O6LQn4p5jvdm1 jhWvBioC7un8AEfrvHHnGlxQq6um7tyA5c2syuECcva9w+HUtPUF+ZHSc1R+CQxnFub/ 9GQyXQaarCu7+P4Ri63EsPSsMRQmLcqaojhu7yXPCi27AXLmD+Vrnjnx6gw/9cvE3hKR 3qfw== Received: by 10.50.100.137 with SMTP id ey9mr5538067igb.57.1349881306591; Wed, 10 Oct 2012 08:01:46 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.50.67.148 with SMTP id n20csp237310igt; Wed, 10 Oct 2012 08:01:45 -0700 (PDT) Received: by 10.152.103.18 with SMTP id fs18mr20221225lab.32.1349881304054; Wed, 10 Oct 2012 08:01:44 -0700 (PDT) Received: from mombin.canonical.com (mombin.canonical.com. [91.189.95.16]) by mx.google.com with ESMTP id ig6si1220517lab.18.2012.10.10.08.01.42; Wed, 10 Oct 2012 08:01:44 -0700 (PDT) Received-SPF: neutral (google.com: 91.189.95.16 is neither permitted nor denied by best guess record for domain of linaro-mm-sig-bounces@lists.linaro.org) client-ip=91.189.95.16; Authentication-Results: mx.google.com; spf=neutral (google.com: 91.189.95.16 is neither permitted nor denied by best guess record for domain of linaro-mm-sig-bounces@lists.linaro.org) smtp.mail=linaro-mm-sig-bounces@lists.linaro.org Received: from localhost ([127.0.0.1] helo=mombin.canonical.com) by mombin.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1TLxn3-0002wf-E4; Wed, 10 Oct 2012 15:01:41 +0000 Received: from mailout3.samsung.com ([203.254.224.33]) by mombin.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1TLxn1-0002wa-U0 for linaro-mm-sig@lists.linaro.org; Wed, 10 Oct 2012 15:01:40 +0000 Received: from epcpsbgm2.samsung.com (epcpsbgm2 [203.254.230.27]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MBO00H4UN2LD2W0@mailout3.samsung.com> for linaro-mm-sig@lists.linaro.org; Thu, 11 Oct 2012 00:01:38 +0900 (KST) X-AuditID: cbfee61b-b7f2b6d000000f14-7c-50758dd2af39 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 3E.BC.03860.2DD85705; Thu, 11 Oct 2012 00:01:38 +0900 (KST) Received: from mcdsrvbld02.digital.local ([106.116.37.23]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MBO002YDME0EC70@mmp1.samsung.com> for linaro-mm-sig@lists.linaro.org; Thu, 11 Oct 2012 00:01:38 +0900 (KST) From: Tomasz Stanislawski To: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org Date: Wed, 10 Oct 2012 16:46:40 +0200 Message-id: <1349880405-26049-22-git-send-email-t.stanislaws@samsung.com> X-Mailer: git-send-email 1.7.10 In-reply-to: <1349880405-26049-1-git-send-email-t.stanislaws@samsung.com> References: <1349880405-26049-1-git-send-email-t.stanislaws@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrIJMWRmVeSWpSXmKPExsVy+t9jAd1LvaUBBi0TRCy+XHnI5MDocfvf Y+YAxigum5TUnMyy1CJ9uwSujEsb7jIWrOCuuHB3BWsD41bOLkZODgkBE4mLjStZIGwxiQv3 1rOB2EICixglNv1ShLDXMklc3skKYrMB1R9b8pkRxBYRcJA4fXcWcxcjFwezwBpmiRcrb4A1 CwtkSzzvu8YMYrMIqEp8bVwOtICDg1fAU6JlmTfELnmJp/f7wMo5gcIX5k1nhtjlIfF//Wam CYy8CxgZVjGKphYkFxQnpeca6RUn5haX5qXrJefnbmIEe/yZ9A7GVQ0WhxgFOBiVeHgrMkoC hFgTy4orcw8xSnAwK4nwmvqUBgjxpiRWVqUW5ccXleakFh9ilOZgURLnbfZICRASSE8sSc1O TS1ILYLJMnFwSjUwBtRPqbENrVe94bgu61Hcs3+N5cZzjv8zPNm4ZpHMudzjMbu29krfLGPZ N6Odp3xdhG1nTamzVOsXNZ7Xc6tZa200gsv+tt6Lnttb5a+12cV76ST5588O3NBgWnTXrO7V bEPTXzscr66pi+VUM5rQvEU87bPaLMd1V7xrW9d/tD7rfHK9ONdLJZbijERDLeai4kQAldEf p/QBAAA= Cc: k.debski@samsung.com, s.nawrocki@samsung.com, pawel@osciak.com, sumit.semwal@ti.com, mchehab@redhat.com, robdclark@gmail.com, linaro-mm-sig@lists.linaro.org, kyungmin.park@samsung.com, laurent.pinchart@ideasonboard.com, airlied@redhat.com, remi@remlab.net Subject: [Linaro-mm-sig] [PATCHv10 21/26] v4l: vb2-dma-contig: add reference counting for a device from allocator context X-BeenThere: linaro-mm-sig@lists.linaro.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Unified memory management interest group." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linaro-mm-sig-bounces@lists.linaro.org Errors-To: linaro-mm-sig-bounces@lists.linaro.org X-Gm-Message-State: ALoCoQkncUC1ReuF1k1hjsfEUIcSsBStsiigJqC4+pXAPbnRgbbEZtKAlW6g2mrhog9z3cF6Dq8y 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. Signed-off-by: Tomasz Stanislawski Acked-by: Hans Verkuil Acked-by: Laurent Pinchart --- drivers/media/v4l2-core/videobuf2-dma-contig.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/media/v4l2-core/videobuf2-dma-contig.c b/drivers/media/v4l2-core/videobuf2-dma-contig.c index b138b5c..2d661fd 100644 --- a/drivers/media/v4l2-core/videobuf2-dma-contig.c +++ b/drivers/media/v4l2-core/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); } @@ -168,6 +169,9 @@ static void *vb2_dc_alloc(void *alloc_ctx, unsigned long size) return ERR_PTR(-ENOMEM); } + /* prevent the device from release while the buffer is exported */ + get_device(dev); + buf->dev = dev; buf->size = size;