All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel.vetter@ffwll.ch>
To: DRI Development <dri-devel@lists.freedesktop.org>,
	LKML <linux-kernel@vger.kernel.org>
Cc: kvm@vger.kernel.org, linux-mm@kvack.org,
	linux-arm-kernel@lists.infradead.org,
	linux-samsung-soc@vger.kernel.org, linux-media@vger.kernel.org,
	linux-s390@vger.kernel.org,
	"Daniel Vetter" <daniel.vetter@ffwll.ch>,
	"Daniel Vetter" <daniel.vetter@intel.com>,
	"Jason Gunthorpe" <jgg@ziepe.ca>,
	"Kees Cook" <keescook@chromium.org>,
	"Dan Williams" <dan.j.williams@intel.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"John Hubbard" <jhubbard@nvidia.com>,
	"Jérôme Glisse" <jglisse@redhat.com>, "Jan Kara" <jack@suse.cz>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	linux-pci@vger.kernel.org
Subject: [PATCH 09/13] PCI: obey iomem restrictions for procfs mmap
Date: Wed,  7 Oct 2020 18:44:22 +0200	[thread overview]
Message-ID: <20201007164426.1812530-10-daniel.vetter@ffwll.ch> (raw)
In-Reply-To: <20201007164426.1812530-1-daniel.vetter@ffwll.ch>

There's three ways to access pci bars from userspace: /dev/mem, sysfs
files, and the old proc interface. Two check against
iomem_is_exclusive, proc never did. And with CONFIG_IO_STRICT_DEVMEM,
this starts to matter, since we don't want random userspace having
access to pci bars while a driver is loaded and using it.

Fix this.

References: 90a545e98126 ("restrict /dev/mem to idle io memory ranges")
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Kees Cook <keescook@chromium.org>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Jérôme Glisse <jglisse@redhat.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: linux-mm@kvack.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-samsung-soc@vger.kernel.org
Cc: linux-media@vger.kernel.org
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org
---
 drivers/pci/proc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
index d35186b01d98..3a2f90beb4cb 100644
--- a/drivers/pci/proc.c
+++ b/drivers/pci/proc.c
@@ -274,6 +274,11 @@ static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma)
 		else
 			return -EINVAL;
 	}
+
+	if (dev->resource[i].flags & IORESOURCE_MEM &&
+	    iomem_is_exclusive(dev->resource[i].start))
+		return -EINVAL;
+
 	ret = pci_mmap_page_range(dev, i, vma,
 				  fpriv->mmap_state, write_combine);
 	if (ret < 0)
-- 
2.28.0


WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel.vetter@ffwll.ch>
To: DRI Development <dri-devel@lists.freedesktop.org>,
	LKML <linux-kernel@vger.kernel.org>
Cc: linux-s390@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
	"Jan Kara" <jack@suse.cz>, "Kees Cook" <keescook@chromium.org>,
	kvm@vger.kernel.org, "Jason Gunthorpe" <jgg@ziepe.ca>,
	"Daniel Vetter" <daniel.vetter@ffwll.ch>,
	linux-pci@vger.kernel.org, linux-mm@kvack.org,
	"Jérôme Glisse" <jglisse@redhat.com>,
	"John Hubbard" <jhubbard@nvidia.com>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Daniel Vetter" <daniel.vetter@intel.com>,
	"Dan Williams" <dan.j.williams@intel.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-media@vger.kernel.org
Subject: [PATCH 09/13] PCI: obey iomem restrictions for procfs mmap
Date: Wed,  7 Oct 2020 18:44:22 +0200	[thread overview]
Message-ID: <20201007164426.1812530-10-daniel.vetter@ffwll.ch> (raw)
In-Reply-To: <20201007164426.1812530-1-daniel.vetter@ffwll.ch>

There's three ways to access pci bars from userspace: /dev/mem, sysfs
files, and the old proc interface. Two check against
iomem_is_exclusive, proc never did. And with CONFIG_IO_STRICT_DEVMEM,
this starts to matter, since we don't want random userspace having
access to pci bars while a driver is loaded and using it.

Fix this.

References: 90a545e98126 ("restrict /dev/mem to idle io memory ranges")
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Kees Cook <keescook@chromium.org>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Jérôme Glisse <jglisse@redhat.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: linux-mm@kvack.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-samsung-soc@vger.kernel.org
Cc: linux-media@vger.kernel.org
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org
---
 drivers/pci/proc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
index d35186b01d98..3a2f90beb4cb 100644
--- a/drivers/pci/proc.c
+++ b/drivers/pci/proc.c
@@ -274,6 +274,11 @@ static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma)
 		else
 			return -EINVAL;
 	}
+
+	if (dev->resource[i].flags & IORESOURCE_MEM &&
+	    iomem_is_exclusive(dev->resource[i].start))
+		return -EINVAL;
+
 	ret = pci_mmap_page_range(dev, i, vma,
 				  fpriv->mmap_state, write_combine);
 	if (ret < 0)
-- 
2.28.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel.vetter@ffwll.ch>
To: DRI Development <dri-devel@lists.freedesktop.org>,
	LKML <linux-kernel@vger.kernel.org>
Cc: linux-s390@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
	"Jan Kara" <jack@suse.cz>, "Kees Cook" <keescook@chromium.org>,
	kvm@vger.kernel.org, "Jason Gunthorpe" <jgg@ziepe.ca>,
	"Daniel Vetter" <daniel.vetter@ffwll.ch>,
	linux-pci@vger.kernel.org, linux-mm@kvack.org,
	"Jérôme Glisse" <jglisse@redhat.com>,
	"John Hubbard" <jhubbard@nvidia.com>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Daniel Vetter" <daniel.vetter@intel.com>,
	"Dan Williams" <dan.j.williams@intel.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-media@vger.kernel.org
Subject: [PATCH 09/13] PCI: obey iomem restrictions for procfs mmap
Date: Wed,  7 Oct 2020 18:44:22 +0200	[thread overview]
Message-ID: <20201007164426.1812530-10-daniel.vetter@ffwll.ch> (raw)
In-Reply-To: <20201007164426.1812530-1-daniel.vetter@ffwll.ch>

There's three ways to access pci bars from userspace: /dev/mem, sysfs
files, and the old proc interface. Two check against
iomem_is_exclusive, proc never did. And with CONFIG_IO_STRICT_DEVMEM,
this starts to matter, since we don't want random userspace having
access to pci bars while a driver is loaded and using it.

Fix this.

References: 90a545e98126 ("restrict /dev/mem to idle io memory ranges")
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Kees Cook <keescook@chromium.org>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Jérôme Glisse <jglisse@redhat.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: linux-mm@kvack.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-samsung-soc@vger.kernel.org
Cc: linux-media@vger.kernel.org
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org
---
 drivers/pci/proc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
index d35186b01d98..3a2f90beb4cb 100644
--- a/drivers/pci/proc.c
+++ b/drivers/pci/proc.c
@@ -274,6 +274,11 @@ static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma)
 		else
 			return -EINVAL;
 	}
+
+	if (dev->resource[i].flags & IORESOURCE_MEM &&
+	    iomem_is_exclusive(dev->resource[i].start))
+		return -EINVAL;
+
 	ret = pci_mmap_page_range(dev, i, vma,
 				  fpriv->mmap_state, write_combine);
 	if (ret < 0)
-- 
2.28.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2020-10-07 16:45 UTC|newest]

Thread overview: 166+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-07 16:44 [PATCH 00/13] follow_pfn and other iomap races Daniel Vetter
2020-10-07 16:44 ` Daniel Vetter
2020-10-07 16:44 ` Daniel Vetter
2020-10-07 16:44 ` [PATCH 01/13] drm/exynos: Stop using frame_vector helpers Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 20:32   ` John Hubbard
2020-10-07 20:32     ` John Hubbard
2020-10-07 20:32     ` John Hubbard
2020-10-07 21:32     ` Daniel Vetter
2020-10-07 21:32       ` Daniel Vetter
2020-10-07 21:32       ` Daniel Vetter
2020-10-07 21:36       ` John Hubbard
2020-10-07 21:36         ` John Hubbard
2020-10-07 21:36         ` John Hubbard
2020-10-07 21:50         ` Daniel Vetter
2020-10-07 21:50           ` Daniel Vetter
2020-10-07 21:50           ` Daniel Vetter
2020-10-07 16:44 ` [PATCH 02/13] drm/exynos: Use FOLL_LONGTERM for g2d cmdlists Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 20:43   ` John Hubbard
2020-10-07 20:43     ` John Hubbard
2020-10-07 20:43     ` John Hubbard
2020-10-07 16:44 ` [PATCH 03/13] misc/habana: Stop using frame_vector helpers Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 20:38   ` John Hubbard
2020-10-07 20:38     ` John Hubbard
2020-10-07 20:38     ` John Hubbard
2020-10-07 16:44 ` [PATCH 04/13] misc/habana: Use FOLL_LONGTERM for userptr Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 20:46   ` John Hubbard
2020-10-07 20:46     ` John Hubbard
2020-10-07 20:46     ` John Hubbard
2020-10-07 16:44 ` [PATCH 05/13] mm/frame-vector: Use FOLL_LONGTERM Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:53   ` Jason Gunthorpe
2020-10-07 16:53     ` Jason Gunthorpe
2020-10-07 16:53     ` Jason Gunthorpe
2020-10-07 17:12     ` Daniel Vetter
2020-10-07 17:12       ` Daniel Vetter
2020-10-07 17:12       ` Daniel Vetter
2020-10-07 17:33       ` Jason Gunthorpe
2020-10-07 17:33         ` Jason Gunthorpe
2020-10-07 17:33         ` Jason Gunthorpe
2020-10-07 21:13   ` John Hubbard
2020-10-07 21:13     ` John Hubbard
2020-10-07 21:13     ` John Hubbard
2020-10-07 21:30     ` Daniel Vetter
2020-10-07 21:30       ` Daniel Vetter
2020-10-07 21:30       ` Daniel Vetter
2020-10-07 16:44 ` [PATCH 06/13] media: videobuf2: Move frame_vector into media subsystem Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 22:18   ` John Hubbard
2020-10-07 22:18     ` John Hubbard
2020-10-07 22:18     ` John Hubbard
2020-10-07 16:44 ` [PATCH 07/13] mm: close race in generic_access_phys Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 17:27   ` Jason Gunthorpe
2020-10-07 17:27     ` Jason Gunthorpe
2020-10-07 17:27     ` Jason Gunthorpe
2020-10-07 18:01     ` Daniel Vetter
2020-10-07 18:01       ` Daniel Vetter
2020-10-07 18:01       ` Daniel Vetter
2020-10-07 23:21       ` Jason Gunthorpe
2020-10-07 23:21         ` Jason Gunthorpe
2020-10-07 23:21         ` Jason Gunthorpe
2020-10-08  0:44   ` John Hubbard
2020-10-08  0:44     ` John Hubbard
2020-10-08  0:44     ` John Hubbard
2020-10-08  7:23     ` Daniel Vetter
2020-10-08  7:23       ` Daniel Vetter
2020-10-08  7:23       ` Daniel Vetter
2020-10-07 16:44 ` [PATCH 08/13] s390/pci: Remove races against pte updates Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-08 16:44   ` Gerald Schaefer
2020-10-08 16:44     ` Gerald Schaefer
2020-10-08 16:44     ` Gerald Schaefer
2020-10-08 17:16     ` Daniel Vetter
2020-10-08 17:16       ` Daniel Vetter
2020-10-08 17:16       ` Daniel Vetter
2020-10-07 16:44 ` Daniel Vetter [this message]
2020-10-07 16:44   ` [PATCH 09/13] PCI: obey iomem restrictions for procfs mmap Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 18:46   ` Bjorn Helgaas
2020-10-07 18:46     ` Bjorn Helgaas
2020-10-07 18:46     ` Bjorn Helgaas
2020-10-07 18:46     ` Bjorn Helgaas
2020-10-07 16:44 ` [PATCH 10/13] PCI: revoke mappings like devmem Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 18:41   ` Bjorn Helgaas
2020-10-07 18:41     ` Bjorn Helgaas
2020-10-07 18:41     ` Bjorn Helgaas
2020-10-07 19:24     ` Daniel Vetter
2020-10-07 19:24       ` Daniel Vetter
2020-10-07 19:24       ` Daniel Vetter
2020-10-07 19:33   ` Dan Williams
2020-10-07 19:33     ` Dan Williams
2020-10-07 19:33     ` Dan Williams
2020-10-07 19:47     ` Daniel Vetter
2020-10-07 19:47       ` Daniel Vetter
2020-10-07 19:47       ` Daniel Vetter
2020-10-07 22:23       ` Dan Williams
2020-10-07 22:23         ` Dan Williams
2020-10-07 22:23         ` Dan Williams
2020-10-07 22:29         ` Dan Williams
2020-10-07 22:29           ` Dan Williams
2020-10-07 22:29           ` Dan Williams
2020-10-08  8:09           ` Daniel Vetter
2020-10-08  8:09             ` Daniel Vetter
2020-10-08  8:09             ` Daniel Vetter
2020-10-07 23:24     ` Jason Gunthorpe
2020-10-07 23:24       ` Jason Gunthorpe
2020-10-07 23:24       ` Jason Gunthorpe
2020-10-08  7:31       ` Daniel Vetter
2020-10-08  7:31         ` Daniel Vetter
2020-10-08  7:31         ` Daniel Vetter
2020-10-08  7:49       ` Dan Williams
2020-10-08  7:49         ` Dan Williams
2020-10-08  7:49         ` Dan Williams
2020-10-08  8:13         ` Daniel Vetter
2020-10-08  8:13           ` Daniel Vetter
2020-10-08  8:13           ` Daniel Vetter
2020-10-08  8:35           ` Dan Williams
2020-10-08  8:35             ` Dan Williams
2020-10-08  8:35             ` Dan Williams
2020-10-08 12:41         ` Jason Gunthorpe
2020-10-08 12:41           ` Jason Gunthorpe
2020-10-08 12:41           ` Jason Gunthorpe
2020-10-07 16:44 ` [PATCH 11/13] mm: add unsafe_follow_pfn Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 17:36   ` Jason Gunthorpe
2020-10-07 17:36     ` Jason Gunthorpe
2020-10-07 17:36     ` Jason Gunthorpe
2020-10-07 18:10     ` Daniel Vetter
2020-10-07 18:10       ` Daniel Vetter
2020-10-07 18:10       ` Daniel Vetter
2020-10-07 19:00       ` Jason Gunthorpe
2020-10-07 19:00         ` Jason Gunthorpe
2020-10-07 19:00         ` Jason Gunthorpe
2020-10-07 19:38         ` Daniel Vetter
2020-10-07 19:38           ` Daniel Vetter
2020-10-07 19:38           ` Daniel Vetter
2020-10-07 16:44 ` [PATCH 12/13] media/videbuf1|2: Mark follow_pfn usage as unsafe Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44 ` [PATCH 13/13] vfio/type1: Mark follow_pfn " Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 16:44   ` Daniel Vetter
2020-10-07 17:39   ` Jason Gunthorpe
2020-10-07 17:39     ` Jason Gunthorpe
2020-10-07 17:39     ` Jason Gunthorpe
2020-10-07 18:14     ` Daniel Vetter
2020-10-07 18:14       ` Daniel Vetter
2020-10-07 18:14       ` Daniel Vetter
2020-10-07 18:47       ` Jason Gunthorpe
2020-10-07 18:47         ` Jason Gunthorpe
2020-10-07 18:47         ` Jason Gunthorpe

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=20201007164426.1812530-10-daniel.vetter@ffwll.ch \
    --to=daniel.vetter@ffwll.ch \
    --cc=akpm@linux-foundation.org \
    --cc=bhelgaas@google.com \
    --cc=dan.j.williams@intel.com \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jack@suse.cz \
    --cc=jgg@ziepe.ca \
    --cc=jglisse@redhat.com \
    --cc=jhubbard@nvidia.com \
    --cc=keescook@chromium.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.