From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 803C0C433FE for ; Tue, 9 Nov 2021 01:13:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6C17F6124D for ; Tue, 9 Nov 2021 01:13:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242691AbhKIBOH (ORCPT ); Mon, 8 Nov 2021 20:14:07 -0500 Received: from mail.kernel.org ([198.145.29.99]:39772 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242176AbhKIBJt (ORCPT ); Mon, 8 Nov 2021 20:09:49 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 062FF61A65; Tue, 9 Nov 2021 01:04:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1636419867; bh=EjAYMVikh+ar3WB5M1uox3DB/K28A+dIc56LbYZC5DM=; h=From:To:Cc:Subject:Date:From; b=HOmHWeZwe/pmGdxGA/dPvGuYezpwn9XKxb6tBdJXWRLTX3Jw/ShH4W2Kwf1ps7Nn1 CWsPBn4nyEtCjOgPM7C9/QJs33PrM9Yx7LIw4AafS1tx/mXMP0QFA7sgJqYHqh6pjC N+RAHYNzNo1Jj3EE+c4EDZpJ7jjttZIFNFaosyGHKN98KBFxAqq8MPvL1/l24AyI3F y9d3dSS6AstJ26O2Fktx7cOPAFM7XeCmZ1XwqUjiOO4Urf1Brd0jIncZWzk/poQe7M +uHlOOxDdKqMgRhIhej8tdr6ltUOnhxonICz0BImogAb1EFcxb5zD8Llfyp5oBNYL3 aROQucGEJwDmA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Charan Teja Reddy , =?UTF-8?q?Christian=20K=C3=B6nig?= , Sasha Levin , sumit.semwal@linaro.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org Subject: [PATCH AUTOSEL 5.4 01/74] dma-buf: WARN on dmabuf release with pending attachments Date: Mon, 8 Nov 2021 12:48:28 -0500 Message-Id: <20211108174942.1189927-1-sashal@kernel.org> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Charan Teja Reddy [ Upstream commit f492283b157053e9555787262f058ae33096f568 ] It is expected from the clients to follow the below steps on an imported dmabuf fd: a) dmabuf = dma_buf_get(fd) // Get the dmabuf from fd b) dma_buf_attach(dmabuf); // Clients attach to the dmabuf o Here the kernel does some slab allocations, say for dma_buf_attachment and may be some other slab allocation in the dmabuf->ops->attach(). c) Client may need to do dma_buf_map_attachment(). d) Accordingly dma_buf_unmap_attachment() should be called. e) dma_buf_detach () // Clients detach to the dmabuf. o Here the slab allocations made in b) are freed. f) dma_buf_put(dmabuf) // Can free the dmabuf if it is the last reference. Now say an erroneous client failed at step c) above thus it directly called dma_buf_put(), step f) above. Considering that it may be the last reference to the dmabuf, buffer will be freed with pending attachments left to the dmabuf which can show up as the 'memory leak'. This should at least be reported as the WARN(). Signed-off-by: Charan Teja Reddy Reviewed-by: Christian König Link: https://patchwork.freedesktop.org/patch/msgid/1627043468-16381-1-git-send-email-charante@codeaurora.org Signed-off-by: Christian König Signed-off-by: Sasha Levin --- drivers/dma-buf/dma-buf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index 758de0e9b2ddc..16bbc9bc9e6d1 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -79,6 +79,7 @@ static void dma_buf_release(struct dentry *dentry) if (dmabuf->resv == (struct dma_resv *)&dmabuf[1]) dma_resv_fini(dmabuf->resv); + WARN_ON(!list_empty(&dmabuf->attachments)); module_put(dmabuf->owner); kfree(dmabuf->name); kfree(dmabuf); -- 2.33.0