X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=drivers%2Fiommu%2Fio-pgtable-arm-v7s.c;h=def8ca1c982d5869a358ca69467a6f13763c46fb;hb=5e608a027082ae426e100a582031e0ff40becc83;hp=8c6139986d7d38f8be2ff3984978d813db56af24;hpb=e9d488c3114acb6a0a93e99c02f9cd1d656f46c7;p=cascardo%2Flinux.git diff --git a/drivers/iommu/io-pgtable-arm-v7s.c b/drivers/iommu/io-pgtable-arm-v7s.c index 8c6139986d7d..def8ca1c982d 100644 --- a/drivers/iommu/io-pgtable-arm-v7s.c +++ b/drivers/iommu/io-pgtable-arm-v7s.c @@ -286,12 +286,14 @@ static int arm_v7s_pte_to_prot(arm_v7s_iopte pte, int lvl) int prot = IOMMU_READ; arm_v7s_iopte attr = pte >> ARM_V7S_ATTR_SHIFT(lvl); - if (attr & ARM_V7S_PTE_AP_RDONLY) + if (!(attr & ARM_V7S_PTE_AP_RDONLY)) prot |= IOMMU_WRITE; if ((attr & (ARM_V7S_TEX_MASK << ARM_V7S_TEX_SHIFT)) == 0) prot |= IOMMU_MMIO; else if (pte & ARM_V7S_ATTR_C) prot |= IOMMU_CACHE; + if (pte & ARM_V7S_ATTR_XN(lvl)) + prot |= IOMMU_NOEXEC; return prot; }