Patch "iommu/vt-d: Fix aligned pages in calculate_psi_aligned_address()" has been added to the 6.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    iommu/vt-d: Fix aligned pages in calculate_psi_aligned_address()

to the 6.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     iommu-vt-d-fix-aligned-pages-in-calculate_psi_aligne.patch
and it can be found in the queue-6.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 5840abc9ec95fc8fa9ed79289d3702f7eff2cb46
Author: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
Date:   Tue Jul 9 23:26:43 2024 +0800

    iommu/vt-d: Fix aligned pages in calculate_psi_aligned_address()
    
    [ Upstream commit 0a3f6b3463014b03f6ad10eacc4d1d9af75d54a1 ]
    
    The helper calculate_psi_aligned_address() is used to convert an arbitrary
    range into a size-aligned one.
    
    The aligned_pages variable is calculated from input start and end, but is
    not adjusted when the start pfn is not aligned and the mask is adjusted,
    which results in an incorrect number of pages returned.
    
    The number of pages is used by qi_flush_piotlb() to flush caches for the
    first-stage translation. With the wrong number of pages, the cache is not
    synchronized, leading to inconsistencies in some cases.
    
    Fixes: c4d27ffaa8eb ("iommu/vt-d: Add cache tag invalidation helpers")
    Signed-off-by: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
    Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>
    Link: https://lore.kernel.org/r/20240709152643.28109-3-baolu.lu@xxxxxxxxxxxxxxx
    Signed-off-by: Will Deacon <will@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/iommu/intel/cache.c b/drivers/iommu/intel/cache.c
index 0a3bb38a52890..44e92638c0cd1 100644
--- a/drivers/iommu/intel/cache.c
+++ b/drivers/iommu/intel/cache.c
@@ -246,6 +246,7 @@ static unsigned long calculate_psi_aligned_address(unsigned long start,
 		 */
 		shared_bits = ~(pfn ^ end_pfn) & ~bitmask;
 		mask = shared_bits ? __ffs(shared_bits) : MAX_AGAW_PFN_WIDTH;
+		aligned_pages = 1UL << mask;
 	}
 
 	*_pages = aligned_pages;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux