Patch "iommu/sun50i: Fix R/W permission check" has been added to the 5.15-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/sun50i: Fix R/W permission check

to the 5.15-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-sun50i-fix-r-w-permission-check.patch
and it can be found in the queue-5.15 subdirectory.

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



commit 199e79d4d8e1db2e89baaf1334a921429c833411
Author: Jernej Skrabec <jernej.skrabec@xxxxxxxxx>
Date:   Tue Oct 25 18:54:13 2022 +0200

    iommu/sun50i: Fix R/W permission check
    
    [ Upstream commit eac0104dc69be50bed86926d6f32e82b44f8c921 ]
    
    Because driver has enum type permissions and iommu subsystem has bitmap
    type, we have to be careful how check for combined read and write
    permissions is done. In such case, we have to mask both permissions and
    check that both are set at the same time.
    
    Current code just masks both flags but doesn't check that both are set.
    In short, it always sets R/W permission, regardles if requested
    permissions were RO, WO or RW. Fix that.
    
    Fixes: 4100b8c229b3 ("iommu: Add Allwinner H6 IOMMU driver")
    Signed-off-by: Jernej Skrabec <jernej.skrabec@xxxxxxxxx>
    Link: https://lore.kernel.org/r/20221025165415.307591-4-jernej.skrabec@xxxxxxxxx
    Signed-off-by: Joerg Roedel <jroedel@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c
index 5b87672c689f..16bfba1faee1 100644
--- a/drivers/iommu/sun50i-iommu.c
+++ b/drivers/iommu/sun50i-iommu.c
@@ -271,7 +271,7 @@ static u32 sun50i_mk_pte(phys_addr_t page, int prot)
 	enum sun50i_iommu_aci aci;
 	u32 flags = 0;
 
-	if (prot & (IOMMU_READ | IOMMU_WRITE))
+	if ((prot & (IOMMU_READ | IOMMU_WRITE)) == (IOMMU_READ | IOMMU_WRITE))
 		aci = SUN50I_IOMMU_ACI_RD_WR;
 	else if (prot & IOMMU_READ)
 		aci = SUN50I_IOMMU_ACI_RD;



[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