linux-efi.vger.kernel.org archive mirror
 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 (unknown), Matthew Garrett
2013-09-03 23:50 ` [PATCH V3 01/11] Add secure_modules() call Matthew Garrett
     [not found]   ` <1378252218-18798-2-git-send-email-matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>
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
     [not found]   ` <1378252218-18798-3-git-send-email-matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>
2013-09-04  0:45     ` James Morris
2013-09-04 16:57     ` David Woodhouse
     [not found]       ` <1378313861.4210.39.camel-W2I5cNIroUsVm/YvaOjsyQ@public.gmane.org>
2013-09-04 17:04         ` Matthew Garrett
2013-09-04 18:58           ` David Woodhouse [this message]
     [not found]             ` <1378321109.2627.9.camel-Fexsq3y4057IgHVZqg5X0TlWvGAXklZc@public.gmane.org>
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
     [not found]   ` <1378252218-18798-4-git-send-email-matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>
2013-09-05  3:52     ` H. Peter Anvin
     [not found]       ` <5227FFE8.5050102-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
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
     [not found]   ` <1378252218-18798-5-git-send-email-matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>
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
     [not found]   ` <1378252218-18798-6-git-send-email-matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>
2013-09-04  0:46     ` James Morris
2013-09-03 23:50 ` [PATCH V3 06/11] Restrict /dev/mem and /dev/kmem " Matthew Garrett
     [not found]   ` <1378252218-18798-7-git-send-email-matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>
2013-09-04  0:47     ` James Morris
     [not found] ` <1378252218-18798-1-git-send-email-matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>
2013-09-03 23:50   ` [PATCH V3 07/11] acpi: Ignore acpi_rsdp kernel parameter " Matthew Garrett
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-05  3:13     ` joeyli
     [not found]     ` <1378252218-18798-12-git-send-email-matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>
2013-09-04  1:42       ` James Morris
2013-09-04  1:42         ` Matthew Garrett
2013-09-05  8:24       ` joeyli
2013-09-05 10:16       ` Matt Fleming
     [not found]         ` <20130905101649.GL28598-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2013-09-05 12:54           ` Matthew Garrett
2013-09-04 15:53   ` Kees Cook
     [not found]     ` <CAGXu5jLCTU1MG4fYDzpT=TAP9DRAUuRuhZNB+edJsOzN4iXbDw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-09-04 16:05       ` Re: Josh Boyer
2013-09-03 23:50 ` [PATCH V3 08/11] kexec: Disable at runtime if the kernel enforces module loading restrictions Matthew Garrett
     [not found]   ` <1378252218-18798-9-git-send-email-matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>
2013-09-04  0:48     ` James Morris
2013-09-04 20:09     ` jerry.hoemann-VXdhtT5mjnY
     [not found]       ` <20130904200959.GE8540-dMAi7lA+vBPDUbYHzcRnttBPR1lH4CV8@public.gmane.org>
2013-09-04 20:12         ` Matthew Garrett
2013-09-04 20:14         ` Josh Boyer
2013-09-08  6:40     ` Greg KH
     [not found]       ` <20130908064027.GA3587-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2013-09-08  6:44         ` Matthew Garrett
2013-09-08  7:24           ` Greg KH
     [not found]             ` <20130908072408.GA5092-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2013-09-08 14:40               ` Matthew Garrett
2013-09-08 15:51               ` Kees Cook
     [not found]                 ` <CAGXu5jLwCt6RtQC+kxcUC69tMydx8DO2QWDv3jK6_mOyT_iNbA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-09-08 16:18                   ` Greg KH
     [not found]                     ` <20130908161859.GA18946-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2013-09-08 16:24                       ` Matthew Garrett
2013-09-08 16:39                         ` Greg KH
     [not found]                           ` <20130908163926.GA19665-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2013-09-08 16:59                             ` Matthew Garrett
2013-09-08 17:22                               ` Greg KH
     [not found]                                 ` <20130908172249.GB20959-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2013-09-08 17:25                                   ` Matthew Garrett
2013-09-08 17:11                   ` James Bottomley
     [not found]                     ` <1378660284.2429.11.camel-sFMDBYUN5F8GjUHQrlYNx2Wm91YjaHnnhRte9Li2A+AAvxtiuMwx3w@public.gmane.org>
2013-09-08 17:15                       ` Matthew Garrett
2013-09-08 17:22                         ` James Bottomley
     [not found]                           ` <1378660975.2429.14.camel-sFMDBYUN5F8GjUHQrlYNx2Wm91YjaHnnhRte9Li2A+AAvxtiuMwx3w@public.gmane.org>
2013-09-08 17:27                             ` Matthew Garrett
2013-09-08 17:32                               ` James Bottomley
     [not found]                                 ` <1378661576.2429.16.camel-sFMDBYUN5F8GjUHQrlYNx2Wm91YjaHnnhRte9Li2A+AAvxtiuMwx3w@public.gmane.org>
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
     [not found]   ` <1378252218-18798-10-git-send-email-matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>
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
     [not found]   ` <1378252218-18798-11-git-send-email-matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org>
2013-09-04  0:49     ` James Morris

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;
as well as URLs for NNTP newsgroup(s).