Message ID | 20221128064648.1934720-9-baolu.lu@linux.intel.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp5475359wrr; Sun, 27 Nov 2022 22:57:53 -0800 (PST) X-Google-Smtp-Source: AA0mqf7MbrOcXzXvTtpzzAC3OWzaxvHOEh0QwFyYfb3S34e2ij1EEQSUZdfmVah3WGrqwUZyIWgg X-Received: by 2002:a17:906:7d13:b0:7bc:addd:2c54 with SMTP id u19-20020a1709067d1300b007bcaddd2c54mr12830882ejo.24.1669618673269; Sun, 27 Nov 2022 22:57:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669618673; cv=none; d=google.com; s=arc-20160816; b=YwnLLvf77e24kyjmBgI/UzryBrh7tp7tryUaiWnsjXERNE4l7O65dNfYDKX5w+VxmU 1Sm2AARtXaCdv2irUwHJOzE8k/WGFQ8AZkdkr9anyQQtKWmQ7M61WlogkhyEOxEAtz7V oLjeVId+eZ3rv2svBfSrEuMTzu6Yf5NznUudnIx2scXKBbk3VHd5qDOPljy89hc54CYT bjM1uuqlVL94qRyd8rQAdNOv20GT9Gy60fcziSVHH63Y4Cj3ykBh3YT/Beqp4mKDTC8J uUVYPa5vqMI0pD+vB0sGfRNVC+x7q1S7UJRBu0zz8m3u6NDo8KnqwbMlzgqR4h1yOZGB 6tZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=1o99Jv/mGKh5uItE/HvHhAO884OTeM4IZgFyYoSAkLw=; b=nw8UBH7d4I5sqTNAoE4jx9VhTCj9rKMFlPGt1CVzS4sVRgcTTsRZy7FRTQEyNU38Ex RCYZ94RT9X0DwCDU0K5neoZdQOJiawM+Sr0t/tzmuc6JVuu8DvROInWeCPHPg377SALd SnKZcUL7HCjYATCaEj7PDfIABcIXaRz5CHFRMp/Xmat1FU5mTX34nJzx3wMQtKVok0Ox ThofQ3/8aadmi/O1XkV9Uk8dc/T6daQy9W+Svvk8tTJ63gYneVqNgoGlxYZ637d4pgWK cobI/PmA3XocrMYPvlxzVsNzxRObZLb1ErDZEf4C+lCm5aUv/2Zz+ww/YghYkajEDgDd 0IXw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=JkAvuSbr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id sy24-20020a1709076f1800b00783ac0b4d32si7542275ejc.941.2022.11.27.22.57.30; Sun, 27 Nov 2022 22:57:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=JkAvuSbr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229946AbiK1Gza (ORCPT <rfc822;gah0developer@gmail.com> + 99 others); Mon, 28 Nov 2022 01:55:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49862 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229891AbiK1GzC (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 28 Nov 2022 01:55:02 -0500 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 789FC14D3A for <linux-kernel@vger.kernel.org>; Sun, 27 Nov 2022 22:55:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669618502; x=1701154502; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=m//sYgF0rdstnqtGp6Wm1Z2gWE/E1AcAWpWObxb6y14=; b=JkAvuSbrURZd+lm2Jo/aWR0HUZQ4Gu+EsKVoEqXHMSsP2ElGXIZ+QV+z qZbHA4y7v1j0WJzpW2cUyRBIgdOOvIunwMA1oLZW+2YDUZO/aNqDW9TXS TqVIDIRKNm5PaqpTtBfuQQH6DcoGRf62W7EE6PYLMr5sZrqhOmVDqTY1p OyV4Yo6QMB32LbVPgH498TlJp3nCwS4bbkRW26oDZqTztZLIkbl/19ztu 2ZFs+wRsSvh9FzghABvEFXzmHa83yKp/2BhsEzE3rs+p02/AXuXBcv887 hDD5LeA8jeiPFl5oHh687M1Q1u+eP5CCOy/z6XrpOynD0gCj1dhxfxpIS Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10544"; a="294462491" X-IronPort-AV: E=Sophos;i="5.96,199,1665471600"; d="scan'208";a="294462491" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2022 22:55:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10544"; a="674120857" X-IronPort-AV: E=Sophos;i="5.96,199,1665471600"; d="scan'208";a="674120857" Received: from allen-box.sh.intel.com ([10.239.159.48]) by orsmga008.jf.intel.com with ESMTP; 27 Nov 2022 22:54:55 -0800 From: Lu Baolu <baolu.lu@linux.intel.com> To: Joerg Roedel <joro@8bytes.org>, Jason Gunthorpe <jgg@nvidia.com>, Christoph Hellwig <hch@infradead.org>, Kevin Tian <kevin.tian@intel.com>, Will Deacon <will@kernel.org>, Robin Murphy <robin.murphy@arm.com>, Jean-Philippe Brucker <jean-philippe@linaro.org> Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>, Hector Martin <marcan@marcan.st>, Sven Peter <sven@svenpeter.dev>, Rob Clark <robdclark@gmail.com>, Marek Szyprowski <m.szyprowski@samsung.com>, Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>, Andy Gross <agross@kernel.org>, Bjorn Andersson <andersson@kernel.org>, Yong Wu <yong.wu@mediatek.com>, Matthias Brugger <matthias.bgg@gmail.com>, Heiko Stuebner <heiko@sntech.de>, Matthew Rosato <mjrosato@linux.ibm.com>, Orson Zhai <orsonzhai@gmail.com>, Baolin Wang <baolin.wang@linux.alibaba.com>, Chunyan Zhang <zhang.lyra@gmail.com>, Chen-Yu Tsai <wens@csie.org>, Thierry Reding <thierry.reding@gmail.com>, iommu@lists.linux.dev, linux-kernel@vger.kernel.org, Lu Baolu <baolu.lu@linux.intel.com> Subject: [PATCH v3 08/20] iommu/sprd: Remove detach_dev callback Date: Mon, 28 Nov 2022 14:46:36 +0800 Message-Id: <20221128064648.1934720-9-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221128064648.1934720-1-baolu.lu@linux.intel.com> References: <20221128064648.1934720-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_PASS, SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750722070119022942?= X-GMAIL-MSGID: =?utf-8?q?1750722070119022942?= |
Series |
iommu: Retire detach_dev callback
|
|
Commit Message
Baolu Lu
Nov. 28, 2022, 6:46 a.m. UTC
The IOMMU driver supports default domain, so the detach_dev op will never
be called. Remove it to avoid dead code.
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
---
drivers/iommu/sprd-iommu.c | 16 ----------------
1 file changed, 16 deletions(-)
Comments
On Mon, Nov 28, 2022 at 02:46:36PM +0800, Lu Baolu wrote: > The IOMMU driver supports default domain, so the detach_dev op will never > be called. Remove it to avoid dead code. > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> > --- > drivers/iommu/sprd-iommu.c | 16 ---------------- > 1 file changed, 16 deletions(-) Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Jason
> From: Lu Baolu <baolu.lu@linux.intel.com> > Sent: Monday, November 28, 2022 2:47 PM > > The IOMMU driver supports default domain, so the detach_dev op will never > be called. Remove it to avoid dead code. > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> > --- > drivers/iommu/sprd-iommu.c | 16 ---------------- > 1 file changed, 16 deletions(-) > > diff --git a/drivers/iommu/sprd-iommu.c b/drivers/iommu/sprd-iommu.c > index 219bfa11f7f4..ae94d74b73f4 100644 > --- a/drivers/iommu/sprd-iommu.c > +++ b/drivers/iommu/sprd-iommu.c > @@ -255,21 +255,6 @@ static int sprd_iommu_attach_device(struct > iommu_domain *domain, > return 0; > } > > -static void sprd_iommu_detach_device(struct iommu_domain *domain, > - struct device *dev) > -{ > - struct sprd_iommu_domain *dom = to_sprd_domain(domain); > - struct sprd_iommu_device *sdev = dom->sdev; > - size_t pgt_size = sprd_iommu_pgt_size(domain); > - > - if (!sdev) > - return; > - > - dma_free_coherent(sdev->dev, pgt_size, dom->pgt_va, dom- > >pgt_pa); > - sprd_iommu_hw_en(sdev, false); > - dom->sdev = NULL; > -} > - Looks this reveals a bug in this driver (not caused by this removal). sprd_iommu_attach_device() doesn't check whether the device has been already attached to a domain and do auto detach. It's written in a way that .detach_dev() must be called to free the dma buffer but ignores the fact that it's not called when default domain support is claimed. Then the dma buffer allocated for the previous domain was left unhandled, causing memory leak.
On Tue, 29 Nov 2022 at 11:35, Tian, Kevin <kevin.tian@intel.com> wrote: > > > From: Lu Baolu <baolu.lu@linux.intel.com> > > Sent: Monday, November 28, 2022 2:47 PM > > > > The IOMMU driver supports default domain, so the detach_dev op will never > > be called. Remove it to avoid dead code. > > > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> > > --- > > drivers/iommu/sprd-iommu.c | 16 ---------------- > > 1 file changed, 16 deletions(-) > > > > diff --git a/drivers/iommu/sprd-iommu.c b/drivers/iommu/sprd-iommu.c > > index 219bfa11f7f4..ae94d74b73f4 100644 > > --- a/drivers/iommu/sprd-iommu.c > > +++ b/drivers/iommu/sprd-iommu.c > > @@ -255,21 +255,6 @@ static int sprd_iommu_attach_device(struct > > iommu_domain *domain, > > return 0; > > } > > > > -static void sprd_iommu_detach_device(struct iommu_domain *domain, > > - struct device *dev) > > -{ > > - struct sprd_iommu_domain *dom = to_sprd_domain(domain); > > - struct sprd_iommu_device *sdev = dom->sdev; > > - size_t pgt_size = sprd_iommu_pgt_size(domain); > > - > > - if (!sdev) > > - return; > > - > > - dma_free_coherent(sdev->dev, pgt_size, dom->pgt_va, dom- > > >pgt_pa); > > - sprd_iommu_hw_en(sdev, false); > > - dom->sdev = NULL; > > -} > > - > > Looks this reveals a bug in this driver (not caused by this removal). > > sprd_iommu_attach_device() doesn't check whether the device has > been already attached to a domain and do auto detach. > > It's written in a way that .detach_dev() must be called to free the > dma buffer but ignores the fact that it's not called when default > domain support is claimed. > > Then the dma buffer allocated for the previous domain was left > unhandled, causing memory leak. I'll look into the issue, thanks for pointing this out. Chunyan
On Mon, 28 Nov 2022 at 14:55, Lu Baolu <baolu.lu@linux.intel.com> wrote: > > The IOMMU driver supports default domain, so the detach_dev op will never > be called. Remove it to avoid dead code. > > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> Acked-by: Chunyan Zhang <zhang.lyra@gmail.com> Thanks, Chunyan > --- > drivers/iommu/sprd-iommu.c | 16 ---------------- > 1 file changed, 16 deletions(-) > > diff --git a/drivers/iommu/sprd-iommu.c b/drivers/iommu/sprd-iommu.c > index 219bfa11f7f4..ae94d74b73f4 100644 > --- a/drivers/iommu/sprd-iommu.c > +++ b/drivers/iommu/sprd-iommu.c > @@ -255,21 +255,6 @@ static int sprd_iommu_attach_device(struct iommu_domain *domain, > return 0; > } > > -static void sprd_iommu_detach_device(struct iommu_domain *domain, > - struct device *dev) > -{ > - struct sprd_iommu_domain *dom = to_sprd_domain(domain); > - struct sprd_iommu_device *sdev = dom->sdev; > - size_t pgt_size = sprd_iommu_pgt_size(domain); > - > - if (!sdev) > - return; > - > - dma_free_coherent(sdev->dev, pgt_size, dom->pgt_va, dom->pgt_pa); > - sprd_iommu_hw_en(sdev, false); > - dom->sdev = NULL; > -} > - > static int sprd_iommu_map(struct iommu_domain *domain, unsigned long iova, > phys_addr_t paddr, size_t pgsize, size_t pgcount, > int prot, gfp_t gfp, size_t *mapped) > @@ -414,7 +399,6 @@ static const struct iommu_ops sprd_iommu_ops = { > .owner = THIS_MODULE, > .default_domain_ops = &(const struct iommu_domain_ops) { > .attach_dev = sprd_iommu_attach_device, > - .detach_dev = sprd_iommu_detach_device, > .map_pages = sprd_iommu_map, > .unmap_pages = sprd_iommu_unmap, > .iotlb_sync_map = sprd_iommu_sync_map, > -- > 2.34.1 >
diff --git a/drivers/iommu/sprd-iommu.c b/drivers/iommu/sprd-iommu.c index 219bfa11f7f4..ae94d74b73f4 100644 --- a/drivers/iommu/sprd-iommu.c +++ b/drivers/iommu/sprd-iommu.c @@ -255,21 +255,6 @@ static int sprd_iommu_attach_device(struct iommu_domain *domain, return 0; } -static void sprd_iommu_detach_device(struct iommu_domain *domain, - struct device *dev) -{ - struct sprd_iommu_domain *dom = to_sprd_domain(domain); - struct sprd_iommu_device *sdev = dom->sdev; - size_t pgt_size = sprd_iommu_pgt_size(domain); - - if (!sdev) - return; - - dma_free_coherent(sdev->dev, pgt_size, dom->pgt_va, dom->pgt_pa); - sprd_iommu_hw_en(sdev, false); - dom->sdev = NULL; -} - static int sprd_iommu_map(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t pgsize, size_t pgcount, int prot, gfp_t gfp, size_t *mapped) @@ -414,7 +399,6 @@ static const struct iommu_ops sprd_iommu_ops = { .owner = THIS_MODULE, .default_domain_ops = &(const struct iommu_domain_ops) { .attach_dev = sprd_iommu_attach_device, - .detach_dev = sprd_iommu_detach_device, .map_pages = sprd_iommu_map, .unmap_pages = sprd_iommu_unmap, .iotlb_sync_map = sprd_iommu_sync_map,