lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <20231224050657.182022-5-haifeng.zhao@linux.intel.com> Date: Sun, 24 Dec 2023 00:06:57 -0500 From: Ethan Zhao <haifeng.zhao@...ux.intel.com> To: bhelgaas@...gle.com, baolu.lu@...ux.intel.com, dwmw2@...radead.org, will@...nel.org, robin.murphy@....com, lukas@...ner.de Cc: linux-pci@...r.kernel.org, iommu@...ts.linux.dev, linux-kernel@...r.kernel.org Subject: [RFC PATCH v6 4/4] iommu/vt-d: break out devTLB invalidation if target device is gone to fix the rare case, the in-process safe_removal unpluged device could be supprise_removed anytime, thus check the target device state if it is gone, don't wait for the completion/timeout anymore. it might cause hard lockup or system hang Signed-off-by: Ethan Zhao <haifeng.zhao@...ux.intel.com> --- drivers/iommu/intel/dmar.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/iommu/intel/dmar.c b/drivers/iommu/intel/dmar.c index 23cb80d62a9a..7a273ee80c49 100644 --- a/drivers/iommu/intel/dmar.c +++ b/drivers/iommu/intel/dmar.c @@ -1423,6 +1423,13 @@ int qi_submit_sync(struct intel_iommu *iommu, struct qi_desc *desc, writel(qi->free_head << shift, iommu->reg + DMAR_IQT_REG); while (qi->desc_status[wait_index] != QI_DONE) { + /* + * if the devTLB invalidation target device is gone, don't wait + * anymore, it might take up to 1min+50%, causes system hang. + */ + if (type == QI_DIOTLB_TYPE && iommu->flush_target_dev) + if (!pci_device_is_present(to_pci_dev(iommu->flush_target_dev))) + break; /* * We will leave the interrupts disabled, to prevent interrupt * context to queue another cmd while a cmd is already submitted -- 2.31.1
Powered by blists - more mailing lists