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
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <813d32e8-e84c-4744-bc2c-b76adc10d00f@linux.intel.com>
Date: Wed, 23 Oct 2024 12:49:44 +0800
From: Baolu Lu <baolu.lu@...ux.intel.com>
To: Zhenzhong Duan <zhenzhong.duan@...el.com>, iommu@...ts.linux.dev,
 linux-kernel@...r.kernel.org
Cc: baolu.lu@...ux.intel.com, dwmw2@...radead.org, joro@...tes.org,
 will@...nel.org, robin.murphy@....com, chao.p.peng@...el.com,
 Kyung Min Park <kyung.min.park@...el.com>
Subject: Re: [PATCH 2/2] iommu/vt-d: Fix checks in pgtable_walk()

On 2024/10/22 17:50, Zhenzhong Duan wrote:
> It's not accurate to dump super page as non-present page,
> meanwhile bit7 in first level page table entry is PAT bit,

Can you please explain how the 'bit7 in first level page table entry' is
relevant to the changes made in this patch?

Also, please make full use of the maximum length of the commit message
line.

> also pointer pte is never NULL in pgtable_walk() context.
> 
> Fixes: 914ff7719e8a ("iommu/vt-d: Dump DMAR translation structure when DMA fault occurs")
> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@...el.com>
> ---
>   drivers/iommu/intel/iommu.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
> index 8288b0ee7a61..fec5cc1147f3 100644
> --- a/drivers/iommu/intel/iommu.c
> +++ b/drivers/iommu/intel/iommu.c
> @@ -707,14 +707,14 @@ static void pgtable_walk(struct intel_iommu *iommu, unsigned long pfn,
>   	while (1) {
>   		offset = pfn_level_offset(pfn, level);
>   		pte = &parent[offset];
> -		if (!pte || (dma_pte_superpage(pte) || !dma_pte_present(pte))) {
> +		if (!dma_pte_present(pte)) {
>   			pr_info("PTE not present at level %d\n", level);
>   			break;
>   		}
>   
>   		pr_info("pte level: %d, pte value: 0x%016llx\n", level, pte->val);
>   
> -		if (level == 1)
> +		if (level == 1 || dma_pte_superpage(pte))
>   			break;
>   
>   		parent = phys_to_virt(dma_pte_addr(pte));

Thanks,
baolu

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ