[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <0621306b-b564-0d8e-9dca-cceca71a9a99@amd.com>
Date: Mon, 16 Mar 2020 14:44:14 -0500
From: Tom Lendacky <thomas.lendacky@....com>
To: Thomas Hellström (VMware)
<thomas_os@...pmail.org>, x86@...nel.org,
Christoph Hellwig <hch@...radead.org>
Cc: linux-kernel@...r.kernel.org,
Thomas Hellstrom <thellstrom@...are.com>,
Dave Hansen <dave.hansen@...ux.intel.com>,
Andy Lutomirski <luto@...nel.org>,
Peter Zijlstra <peterz@...radead.org>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
"H. Peter Anvin" <hpa@...or.com>,
Christian König <christian.koenig@....com>,
Marek Szyprowski <m.szyprowski@...sung.com>
Subject: Re: [PATCH v3 2/2] dma-mapping: Fix dma_pgprot() for unencrypted
coherent pages
On 3/4/20 5:45 AM, Thomas Hellström (VMware) wrote:
> From: Thomas Hellstrom <thellstrom@...are.com>
>
> When dma_mmap_coherent() sets up a mapping to unencrypted coherent memory
> under SEV encryption and sometimes under SME encryption, it will actually
> set up an encrypted mapping rather than an unencrypted, causing devices
> that DMAs from that memory to read encrypted contents. Fix this.
>
> When force_dma_unencrypted() returns true, the linear kernel map of the
> coherent pages have had the encryption bit explicitly cleared and the
> page content is unencrypted. Make sure that any additional PTEs we set
> up to these pages also have the encryption bit cleared by having
> dma_pgprot() return a protection with the encryption bit cleared in this
> case.
>
> Cc: Dave Hansen <dave.hansen@...ux.intel.com>
> Cc: Andy Lutomirski <luto@...nel.org>
> Cc: Peter Zijlstra <peterz@...radead.org>
> Cc: Thomas Gleixner <tglx@...utronix.de>
> Cc: Ingo Molnar <mingo@...hat.com>
> Cc: Borislav Petkov <bp@...en8.de>
> Cc: "H. Peter Anvin" <hpa@...or.com>
> Cc: Christoph Hellwig <hch@...radead.org>
> Cc: Christian König <christian.koenig@....com>
> Cc: Marek Szyprowski <m.szyprowski@...sung.com>
> Cc: Tom Lendacky <thomas.lendacky@....com>
> Signed-off-by: Thomas Hellstrom <thellstrom@...are.com>
Acked-by: Tom Lendacky <thomas.lendacky@....com>
> ---
> kernel/dma/mapping.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
> index 12ff766ec1fa..98e3d873792e 100644
> --- a/kernel/dma/mapping.c
> +++ b/kernel/dma/mapping.c
> @@ -154,6 +154,8 @@ EXPORT_SYMBOL(dma_get_sgtable_attrs);
> */
> pgprot_t dma_pgprot(struct device *dev, pgprot_t prot, unsigned long attrs)
> {
> + if (force_dma_unencrypted(dev))
> + prot = pgprot_decrypted(prot);
> if (dev_is_dma_coherent(dev) ||
> (IS_ENABLED(CONFIG_DMA_NONCOHERENT_CACHE_SYNC) &&
> (attrs & DMA_ATTR_NON_CONSISTENT)))
>
Powered by blists - more mailing lists