All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiang Liu <jiang.liu@linux.intel.com>
To: Joerg Roedel <joro@8bytes.org>,
	David Woodhouse <dwmw2@infradead.org>,
	Yinghai Lu <yinghai@kernel.org>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Dan Williams <dan.j.williams@intel.com>,
	Vinod Koul <vinod.koul@intel.com>,
	"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>
Cc: Jiang Liu <jiang.liu@linux.intel.com>,
	Ashok Raj <ashok.raj@intel.com>,
	Yijing Wang <wangyijing@huawei.com>,
	Tony Luck <tony.luck@intel.com>,
	iommu@lists.linux-foundation.org, linux-pci@vger.kernel.org,
	linux-hotplug@vger.kernel.org, linux-kernel@vger.kernel.org,
	dmaengine@vger.kernel.org
Subject: [Patch Part3 V4 07/21] iommu/vt-d: Avoid freeing virtual machine domain in free_dmar_iommu()
Date: Fri, 11 Jul 2014 14:19:31 +0800	[thread overview]
Message-ID: <1405059585-10620-8-git-send-email-jiang.liu@linux.intel.com> (raw)
In-Reply-To: <1405059585-10620-1-git-send-email-jiang.liu@linux.intel.com>

Virtual machine domains are created by intel_iommu_domain_init() and
should be destroyed by intel_iommu_domain_destroy(). So avoid freeing
virtual machine domain data structure in free_dmar_iommu() when
doamin->iommu_count reaches zero, otherwise it may cause invalid
memory access because the IOMMU framework still holds references
to the domain structure.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/iommu/intel-iommu.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 0984fa58d872..5d7383775bf1 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -1480,7 +1480,8 @@ static void free_dmar_iommu(struct intel_iommu *iommu)
 
 			domain = iommu->domains[i];
 			clear_bit(i, iommu->domain_ids);
-			if (domain_detach_iommu(domain, iommu) == 0)
+			if (domain_detach_iommu(domain, iommu) == 0 &&
+			    !domain_type_is_vm(domain))
 				domain_exit(domain);
 		}
 	}
-- 
1.7.10.4


WARNING: multiple messages have this Message-ID (diff)
From: Jiang Liu <jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
To: Joerg Roedel <joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>,
	David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
	Yinghai Lu <yinghai-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Bjorn Helgaas <bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	Dan Williams
	<dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	"Rafael J . Wysocki"
	<rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: Tony Luck <tony.luck-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-hotplug-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	Jiang Liu <jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
Subject: [Patch Part3 V4 07/21] iommu/vt-d: Avoid freeing virtual machine domain in free_dmar_iommu()
Date: Fri, 11 Jul 2014 14:19:31 +0800	[thread overview]
Message-ID: <1405059585-10620-8-git-send-email-jiang.liu@linux.intel.com> (raw)
In-Reply-To: <1405059585-10620-1-git-send-email-jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>

Virtual machine domains are created by intel_iommu_domain_init() and
should be destroyed by intel_iommu_domain_destroy(). So avoid freeing
virtual machine domain data structure in free_dmar_iommu() when
doamin->iommu_count reaches zero, otherwise it may cause invalid
memory access because the IOMMU framework still holds references
to the domain structure.

Signed-off-by: Jiang Liu <jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
---
 drivers/iommu/intel-iommu.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 0984fa58d872..5d7383775bf1 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -1480,7 +1480,8 @@ static void free_dmar_iommu(struct intel_iommu *iommu)
 
 			domain = iommu->domains[i];
 			clear_bit(i, iommu->domain_ids);
-			if (domain_detach_iommu(domain, iommu) == 0)
+			if (domain_detach_iommu(domain, iommu) == 0 &&
+			    !domain_type_is_vm(domain))
 				domain_exit(domain);
 		}
 	}
-- 
1.7.10.4

WARNING: multiple messages have this Message-ID (diff)
From: Jiang Liu <jiang.liu@linux.intel.com>
To: Joerg Roedel <joro@8bytes.org>,
	David Woodhouse <dwmw2@infradead.org>,
	Yinghai Lu <yinghai@kernel.org>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Dan Williams <dan.j.williams@intel.com>,
	Vinod Koul <vinod.koul@intel.com>,
	"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>
Cc: Jiang Liu <jiang.liu@linux.intel.com>,
	Ashok Raj <ashok.raj@intel.com>,
	Yijing Wang <wangyijing@huawei.com>,
	Tony Luck <tony.luck@intel.com>,
	iommu@lists.linux-foundation.org, linux-pci@vger.kernel.org,
	linux-hotplug@vger.kernel.org, linux-kernel@vger.kernel.org,
	dmaengine@vger.kernel.org
Subject: [Patch Part3 V4 07/21] iommu/vt-d: Avoid freeing virtual machine domain in free_dmar_iommu()
Date: Fri, 11 Jul 2014 06:19:31 +0000	[thread overview]
Message-ID: <1405059585-10620-8-git-send-email-jiang.liu@linux.intel.com> (raw)
In-Reply-To: <1405059585-10620-1-git-send-email-jiang.liu@linux.intel.com>

Virtual machine domains are created by intel_iommu_domain_init() and
should be destroyed by intel_iommu_domain_destroy(). So avoid freeing
virtual machine domain data structure in free_dmar_iommu() when
doamin->iommu_count reaches zero, otherwise it may cause invalid
memory access because the IOMMU framework still holds references
to the domain structure.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/iommu/intel-iommu.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 0984fa58d872..5d7383775bf1 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -1480,7 +1480,8 @@ static void free_dmar_iommu(struct intel_iommu *iommu)
 
 			domain = iommu->domains[i];
 			clear_bit(i, iommu->domain_ids);
-			if (domain_detach_iommu(domain, iommu) = 0)
+			if (domain_detach_iommu(domain, iommu) = 0 &&
+			    !domain_type_is_vm(domain))
 				domain_exit(domain);
 		}
 	}
-- 
1.7.10.4


  parent reply	other threads:[~2014-07-11  6:17 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-11  6:19 [Patch Part3 V4 00/21] Enable support of Intel DMAR device hotplug Jiang Liu
2014-07-11  6:19 ` Jiang Liu
2014-07-11  6:19 ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 01/21] iommu/vt-d: Match segment number when searching for dev_iotlb capable devices Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 02/21] iommu/vt-d: Use correct domain id to flush virtual machine domains Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 03/21] iommu/vt-d: Introduce helper functions to improve code readability Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 04/21] iommu/vt-d: Introduce helper functions to make code symmetric for readability Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 05/21] iommu/vt-d: Allocate dynamic domain id for virtual domains only Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 06/21] iommu/vt-d: Fix possible invalid memory access caused by free_dmar_iommu() Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` Jiang Liu [this message]
2014-07-11  6:19   ` [Patch Part3 V4 07/21] iommu/vt-d: Avoid freeing virtual machine domain in free_dmar_iommu() Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 08/21] iommu/vt-d: Simplify include/linux/dmar.h Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 09/21] iommu/vt-d: Change iommu_enable/disable_translation to return void Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 10/21] iommu/vt-d: Simplify intel_unmap_sg() and kill duplicated code Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 11/21] iommu/vt-d: Introduce helper domain_pfn_within_range() to simplify code Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 12/21] iommu/vt-d: Introduce helper function iova_size() to improve code readability Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 13/21] iommu/vt-d: Fix issue in computing domain's iommu_snooping flag Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 14/21] iommu/vt-d: Introduce helper function dmar_walk_resources() Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 15/21] iommu/vt-d: Dynamically allocate and free seq_id for DMAR units Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 16/21] iommu/vt-d: Implement DMAR unit hotplug framework Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-23 15:34   ` Joerg Roedel
2014-07-23 15:34     ` Joerg Roedel
2014-07-23 15:34     ` Joerg Roedel
2014-07-24  2:33     ` iommu/vt-d: Fix build error caused by unknown definition of acpi_handle Jiang Liu
2014-07-24  2:33       ` Jiang Liu
2014-07-24  2:33       ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 17/21] iommu/vt-d: Search for ACPI _DSM method for DMAR hotplug Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 18/21] iommu/vt-d: Enhance intel_irq_remapping driver to support DMAR unit hotplug Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 19/21] iommu/vt-d: Enhance error recovery in function intel_enable_irq_remapping() Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19 ` [Patch Part3 V4 20/21] iommu/vt-d: Enhance intel-iommu driver to support DMAR unit hotplug Jiang Liu
2014-07-11  6:19   ` Jiang Liu
2014-07-11  6:19   ` Jiang Liu
     [not found] ` <1405059585-10620-1-git-send-email-jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2014-07-11  6:19   ` [Patch Part3 V4 21/21] pci, ACPI, iommu: Enhance pci_root to support DMAR device hotplug Jiang Liu
2014-07-11  6:19     ` Jiang Liu
2014-07-11  6:19     ` Jiang Liu
2014-07-16 18:48     ` Bjorn Helgaas
2014-07-16 18:48       ` Bjorn Helgaas
2014-07-29 10:49 ` [Patch Part3 V4 00/21] Enable support of Intel " Joerg Roedel
2014-07-29 10:49   ` Joerg Roedel
2014-07-29 12:09   ` Jiang Liu
2014-07-29 12:09     ` Jiang Liu
2014-07-29 12:09     ` Jiang Liu

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=1405059585-10620-8-git-send-email-jiang.liu@linux.intel.com \
    --to=jiang.liu@linux.intel.com \
    --cc=ashok.raj@intel.com \
    --cc=bhelgaas@google.com \
    --cc=dan.j.williams@intel.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=dwmw2@infradead.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=linux-hotplug@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=tony.luck@intel.com \
    --cc=vinod.koul@intel.com \
    --cc=wangyijing@huawei.com \
    --cc=yinghai@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.