iommu/sun50i: Fix R/W permission check
[ Upstream commiteac0104dc6] 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:4100b8c229("iommu: Add Allwinner H6 IOMMU driver") Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com> Link: https://lore.kernel.org/r/20221025165415.307591-4-jernej.skrabec@gmail.com Signed-off-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
3a63c4ff57
commit
147af0c1e7
1 changed files with 1 additions and 1 deletions
|
|
@ -272,7 +272,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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue