From patchwork Tue Oct 2 14:27:32 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomasz Stanislawski X-Patchwork-Id: 11942 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 7A7681A52FC for ; Tue, 2 Oct 2012 14:30:32 +0000 (UTC) Received: from mail-ie0-f180.google.com (mail-ie0-f180.google.com [209.85.223.180]) by fiordland.canonical.com (Postfix) with ESMTP id 2AE2AA18466 for ; Tue, 2 Oct 2012 14:30:32 +0000 (UTC) Received: by mail-ie0-f180.google.com with SMTP id e10so14258231iej.11 for ; Tue, 02 Oct 2012 07:30:32 -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=+9gfOJtE0TAl4aDZ2tGbMAn89butoIPTkoL7vfilUKM=; b=abxE/q1VrOgvIcJAKkFxjGREl/9meukGPPmIJpR9SVIbw2TkshYKYAPwKDZuD1GiG4 ypytKNc/Ja4WvR7uPLGRKCcB+T8I2mjmDJltYMR7c77O4Vljl6G5x8S9GiQVMkSjTA53 f0nxCu8OS61pi4eAWsg3youdlkO+oCNe84M2oXST8nD4KDoLI3fe3BS5Xh0elQcWEpkG hHcLm+ID6GPhsQhfrDIXWKkzTcI051voNJnmX7KKW3/VxLiLGm3pG0cfbnwiSkgOdbmW ZxfC1RZ38GyN4UnvLNPV9goE/LzlDJobpN1lpNGmIk73gArTtdxrmqUM9A48vj+4G0Kf yexw== Received: by 10.50.155.136 with SMTP id vw8mr8337151igb.28.1349188231873; Tue, 02 Oct 2012 07:30:31 -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.184.232 with SMTP id ex8csp85052igc; Tue, 2 Oct 2012 07:30:31 -0700 (PDT) Received: by 10.205.118.135 with SMTP id fq7mr1019255bkc.50.1349188228123; Tue, 02 Oct 2012 07:30:28 -0700 (PDT) Received: from mombin.canonical.com (mombin.canonical.com. [91.189.95.16]) by mx.google.com with ESMTP id w19si1706852bkv.66.2012.10.02.07.30.26; Tue, 02 Oct 2012 07:30:28 -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 1TJ3UP-0005Fn-Ig; Tue, 02 Oct 2012 14:30:25 +0000 Received: from mailout2.samsung.com ([203.254.224.25]) by mombin.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1TJ3UN-0005FT-7g for linaro-mm-sig@lists.linaro.org; Tue, 02 Oct 2012 14:30:23 +0000 Received: from epcpsbgm1.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MB900KCXSAFGZ70@mailout2.samsung.com> for linaro-mm-sig@lists.linaro.org; Tue, 02 Oct 2012 23:30:22 +0900 (KST) X-AuditID: cbfee61a-b7f726d000000ec7-ce-506afa7d8c02 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id A0.BE.03783.D7AFA605; Tue, 02 Oct 2012 23:30:22 +0900 (KST) Received: from mcdsrvbld02.digital.local ([106.116.37.23]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MB9005A7S65K790@mmp2.samsung.com> for linaro-mm-sig@lists.linaro.org; Tue, 02 Oct 2012 23:30:21 +0900 (KST) From: Tomasz Stanislawski To: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org Date: Tue, 02 Oct 2012 16:27:32 +0200 Message-id: <1349188056-4886-22-git-send-email-t.stanislaws@samsung.com> X-Mailer: git-send-email 1.7.10 In-reply-to: <1349188056-4886-1-git-send-email-t.stanislaws@samsung.com> References: <1349188056-4886-1-git-send-email-t.stanislaws@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrEJMWRmVeSWpSXmKPExsVy+t9jQd26X1kBBlf62Sy+XHnI5MDocfvf Y+YAxigum5TUnMyy1CJ9uwSujGOrlrIXrOWpmPd+FmMD4wKuLkZODgkBE4lLE36xQthiEhfu rWfrYuTiEBKYzihxaPI5RghnLZNE+5pGsCo2oI5jSz4zgtgiAg4Sp+/OYgYpYhZYwyzxYuUN oHYODmGBLIkf08NAalgEVCWub5/IDhLmFfCQuHrPD2KZvMTT+31sIDYnUPjnkwssILaQgLvE nuVNbBMYeRcwMqxiFE0tSC4oTkrPNdQrTswtLs1L10vOz93ECPb5M6kdjCsbLA4xCnAwKvHw 7jyZGSDEmlhWXJl7iFGCg1lJhNf6flaAEG9KYmVValF+fFFpTmrxIUZpDhYlcd5mj5QAIYH0 xJLU7NTUgtQimCwTB6dUA6MW8zwjuYV5jQK8Mkr6TYo8Bjfq7imfu+Lp90stde/Egm/rC+w4 Wdlfx7CFXf44e10eu0VIU9iM77tOzFi+3Em0c2FtnP/k1Fu3hY+XK4gv35hyaMctWaZ4hvhM TevuV9rWexQe9Cj5XuTjs/uzQrViSnGAglxgKndSdouqzau1s9arCa62V2Ipzkg01GIuKk4E AE5EeUX1AQAA 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] [PATCHv9 21/25] 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: ALoCoQlnM0B+vJ4bp+z+kqnfu3oK+KuwYTmcOg7EXca/4HtC9Bmvl2aozUAArtm6eiZIHHdPpes4 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 --- 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 b138b5c..b4d287a 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); }