Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1545012

Re: [PATCH] iommu/arm-smmu-v3: prevent corruption of ste stage-1 context ptr

From Will Deacon <will.deacon@arm.com>
Newsgroups linux.kernel
Subject Re: [PATCH] iommu/arm-smmu-v3: prevent corruption of ste stage-1 context ptr
Date 2016-12-20 11:00 +0100
Message-ID <sQpnb-3Uc-13@gated-at.bofh.it> (permalink)
References <sQd2G-4h6-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Hi Nate,

Thanks for the patch.

On Mon, Dec 19, 2016 at 03:38:38PM -0500, Nate Watterson wrote:
> To ensure that the stage-1 context ptr for an ste points to the
> intended context descriptor, this patch adds code to clear away
> the stale context ptr value prior to or'ing in the new one.
> 
> Signed-off-by: Nate Watterson <nwatters@codeaurora.org>
> ---
>  drivers/iommu/arm-smmu-v3.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
> index 4d6ec44..093f9f1 100644
> --- a/drivers/iommu/arm-smmu-v3.c
> +++ b/drivers/iommu/arm-smmu-v3.c
> @@ -1080,6 +1080,8 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_device *smmu, u32 sid,
>  		if (smmu->features & ARM_SMMU_FEAT_STALLS)
>  			dst[1] |= cpu_to_le64(STRTAB_STE_1_S1STALLD);
>  
> +		val &= ~(STRTAB_STE_0_S1CTXPTR_MASK <<
> +			 STRTAB_STE_0_S1CTXPTR_SHIFT);
>  		val |= (ste->s1_cfg->cdptr_dma & STRTAB_STE_0_S1CTXPTR_MASK
>  		        << STRTAB_STE_0_S1CTXPTR_SHIFT) |
>  			STRTAB_STE_0_CFG_S1_TRANS;

Good catch. We only clear the Config field at present, although I think
it would be better if we just did val = 0 instead of clearing the Config
field, and then just recreate all of the S1-related fields (ctxptr, fmt,
cdmax) if we're installing a stage-1 STE. The other STE fields aren't
treated as read-modify-write, so it's more consistent not to treat the
initial dword specially other than for determining ste_live.

What do you think?

Will

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH] iommu/arm-smmu-v3: prevent corruption of ste stage-1 context ptr Nate Watterson <nwatters@codeaurora.org> - 2016-12-19 21:50 +0100
  Re: [PATCH] iommu/arm-smmu-v3: prevent corruption of ste stage-1  context ptr Will Deacon <will.deacon@arm.com> - 2016-12-20 11:00 +0100
    [PATCH] iommu/arm-smmu-v3: Clear prior settings when updating STEs Nate Watterson <nwatters@codeaurora.org> - 2016-12-21 05:20 +0100

csiph-web