mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: David Woodhouse <dwmw2@infradead.org>
To: Matthew Garrett <matthew.garrett@nebula.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>,
	"keescook@chromium.org" <keescook@chromium.org>,
	"hpa@zytor.com" <hpa@zytor.com>
Subject: Re: [PATCH V3 02/11] PCI: Lock down BAR access when module security is enabled
Date: Wed, 04 Sep 2013 19:58:29 +0100	[thread overview]
Message-ID: <1378321109.2627.9.camel@shinybook.infradead.org> (raw)
In-Reply-To: <1378314286.13193.5.camel@x230>

[-- Attachment #1: Type: text/plain, Size: 1909 bytes --]

On Wed, 2013-09-04 at 17:04 +0000, Matthew Garrett wrote:
> Do we have in-kernel API to guarantee that a given PCI device is
> actively isolated by an IOMMU such that it can't modify any host kernel
> pages that aren't explicitly intended to be writable by the device? That
> seems to be the biggest constraint.

We don't, but it's not hard to add one if we have a consensus on exactly
what it needs to mean.

> How does virt passthrough work in this case? The current situation
> appears to be that qemu just passes the BARs through to the guest, and
> it's the guest that sets things up. We'd need to be able to ensure that
> there's no way the guest driver can cause DMA into the host kernel.

We set up the IOMMU page tables so that the virtual bus addresses seen
by the PCI device are 1:1 mapped to the guest "physical" address space.

That is, what the PCI device sees as a "physical" address is equivalent
to what the guest sees as a "physical" address space. It can access
memory which belongs to that guest, and nothing else. So that should be
fine.

(Currently, the guest sees no IOMMU. There's just that permanent 1:1
mapping of all of the guest's memory so that it's visible to the device.
We may later implement a virtual IOMMU within qemu, and then we'll have
more dynamic mappings. But the principle will remain the same: PCI
devices assigned to a KVM guest can only 'see' memory pages which belong
to that guest.

> > And there are non-DMA considerations too, aren't there? What about just
> > writing some fun stuff to a memory BAR and then writing to PCI config to
> > map that BAR to an address that we can get executed by kernel code?
> 
> Yes, that's why config space is locked down for now.

OK.

-- 
David Woodhouse                            Open Source Technology Centre
David.Woodhouse@intel.com                              Intel Corporation

[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5745 bytes --]

  reply	other threads:[~2013-09-04 18:58 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-03 23:50 Matthew Garrett
2013-09-03 23:50 ` [PATCH V3 01/11] Add secure_modules() call Matthew Garrett
2013-09-04  0:45   ` James Morris
2013-09-05  2:14   ` joeyli
2013-09-03 23:50 ` [PATCH V3 02/11] PCI: Lock down BAR access when module security is enabled Matthew Garrett
2013-09-04  0:45   ` James Morris
2013-09-04 16:57   ` David Woodhouse
2013-09-04 17:04     ` Matthew Garrett
2013-09-04 18:58       ` David Woodhouse [this message]
2013-09-04 19:01         ` Matthew Garrett
2013-09-04 19:31           ` David Woodhouse
2013-09-03 23:50 ` [PATCH V3 03/11] x86: Lock down IO port " Matthew Garrett
2013-09-04  0:45   ` James Morris
2013-09-05  3:52   ` H. Peter Anvin
2013-09-05  3:58     ` Matthew Garrett
2013-09-05 15:36       ` H. Peter Anvin
2013-09-03 23:50 ` [PATCH V3 04/11] ACPI: Limit access to custom_method Matthew Garrett
2013-09-04  0:46   ` James Morris
2013-09-03 23:50 ` [PATCH V3 05/11] asus-wmi: Restrict debugfs interface when module loading is restricted Matthew Garrett
2013-09-04  0:46   ` James Morris
2013-09-03 23:50 ` [PATCH V3 06/11] Restrict /dev/mem and /dev/kmem " Matthew Garrett
2013-09-04  0:47   ` James Morris
2013-09-03 23:50 ` [PATCH V3 07/11] acpi: Ignore acpi_rsdp kernel parameter " Matthew Garrett
2013-09-03 23:50 ` [PATCH V3 08/11] kexec: Disable at runtime if the kernel enforces module loading restrictions Matthew Garrett
2013-09-04  0:48   ` James Morris
2013-09-04 20:09   ` jerry.hoemann
2013-09-04 20:12     ` Matthew Garrett
2013-09-04 20:14     ` Josh Boyer
2013-09-08  6:40   ` Greg KH
2013-09-08  6:44     ` Matthew Garrett
2013-09-08  7:24       ` Greg KH
2013-09-08 14:40         ` Matthew Garrett
2013-09-08 15:51         ` Kees Cook
2013-09-08 16:18           ` Greg KH
2013-09-08 16:24             ` Matthew Garrett
2013-09-08 16:39               ` Greg KH
2013-09-08 16:59                 ` Matthew Garrett
2013-09-08 17:22                   ` Greg KH
2013-09-08 17:25                     ` Matthew Garrett
2013-09-08 17:11           ` James Bottomley
2013-09-08 17:15             ` Matthew Garrett
2013-09-08 17:22               ` James Bottomley
2013-09-08 17:27                 ` Matthew Garrett
2013-09-08 17:32                   ` James Bottomley
2013-09-08 17:38                     ` Matthew Garrett
2013-09-03 23:50 ` [PATCH V3 09/11] uswsusp: Disable when module loading is restricted Matthew Garrett
2013-09-04  0:48   ` James Morris
2013-09-05  3:20   ` joeyli
2013-09-03 23:50 ` [PATCH V3 10/11] x86: Restrict MSR access " Matthew Garrett
2013-09-04  0:49   ` James Morris
2013-09-03 23:50 ` [PATCH V3 11/11] Add option to automatically enforce module signatures when in Secure Boot mode Matthew Garrett
2013-09-04  1:42   ` James Morris
2013-09-04  1:42     ` Matthew Garrett
2013-09-05  3:13   ` joeyli
2013-09-05  8:24   ` joeyli
2013-09-05 10:16   ` Matt Fleming
2013-09-05 12:54     ` Matthew Garrett
2013-09-04 15:53 ` Kees Cook
2013-09-04 16:05   ` Re: Josh Boyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1378321109.2627.9.camel@shinybook.infradead.org \
    --to=dwmw2@infradead.org \
    --cc=hpa@zytor.com \
    --cc=keescook@chromium.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matthew.garrett@nebula.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®