public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <greg@kroah.com>
To: Robert Hancock <hancockrwd@gmail.com>
Cc: Myron Stowe <myron.stowe@redhat.com>,
	bhelgaas@google.com, linux-pci@vger.kernel.org,
	yuxiangl@marvell.com, yxlraid@gmail.com,
	alex.williamson@redhat.com, kay@vrfy.org,
	linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] PCI: Handle device quirks when accessing sysfs resource<N> entries
Date: Thu, 21 Mar 2013 18:24:55 -0700	[thread overview]
Message-ID: <20130322012455.GB2009@kroah.com> (raw)
In-Reply-To: <514BAB13.3000101@gmail.com>

On Thu, Mar 21, 2013 at 06:51:31PM -0600, Robert Hancock wrote:
> On 03/20/2013 10:35 PM, Myron Stowe wrote:
> >Sysfs includes entries to memory regions that back a PCI device's BARs.
> >The pci-sysfs entries backing I/O Port BARs can be accessed by userspace,
> >providing direct access to the device's registers.  File permissions
> >prevent random users from accessing the device's registers through these
> >files, but don't stop a privileged app that chooses to ignore the purpose
> >of these files from doing so.
> >
> >There are devices with abnormally strict restrictions with respect to
> >accessing their registers; aspects that are typically handled by the
> >device's driver.  When these access restrictions are not followed - as
> >when a userspace app such as "udevadm info --attribute-walk
> >--path=/sys/..." parses though reading all the device's sysfs entries - it
> >can cause such devices to fail.
> >
> >This patch introduces a quirking mechanism that can be used to detect
> >accesses that do no meet the device's restrictions, letting a device
> >specific method intervene and decide how to progress.
> >
> >Reported-by: Xiangliang Yu <yuxiangl@marvell.com>
> >Signed-off-by: Myron Stowe <myron.stowe@redhat.com>
> 
> I honestly don't think there's much point in even attempting this
> strategy. This list of devices in the quirk can't possibly be
> complete. It would likely be easier to enumerate a white-list of
> devices that can deal with their IO ports being read willy-nilly
> than a blacklist of those that don't, as there's likely countless
> devices that fall into this category. Even if they don't choke as
> badly as these ones do, it's quite likely that bad behavior will
> result.
> 
> I think there's a few things that need to be done:
> 
> -Fix the bug in udevadm that caused it to trawl through these files
> willy-nilly,

There's no "bug" in udevadm, the user explicitly asked for it to read
all of those files.  Just like grep or bash could be used to ask to read
those files.

If the kernel is going to provide files to userspace, the kernel can't
suddenly get upset if userspace actually reads those files.

Fix the kernel here please.

> -Fix the kernel so that access through these files complies with the
> kernel's mechanisms for claiming IO/memory regions to prevent access
> conflicts (i.e. opening these files should claim the resource region
> they refer to, and should fail with EBUSY or something if another
> process or a kernel driver is using it).

Yes, this is a good solution.

> -Reconsider whether supporting read/write on the resource files for
> IO port regions like these makes any sense. Obviously mmap isn't
> very practical for IO port access on x86 but you could even do
> something like an ioctl for this purpose. Not very many pieces of
> software would need to access these files so it's likely OK if the
> API is a bit ugly. That would prevent something like grepping
> through sysfs from generating port accesses to random devices.

Also a good solution.

greg k-h

  reply	other threads:[~2013-03-22  1:25 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-21  4:34 [PATCH 0/3] PCI: Handle device quirks when accessing sysfs resource<N> entries Myron Stowe
2013-03-21  4:34 ` [PATCH 1/3] PCI: Define macro for Marvell vendor ID Myron Stowe
2013-03-21  4:35 ` [PATCH 2/3] PCI: Handle device quirks when accessing sysfs resource<N> entries Myron Stowe
2013-03-22  0:51   ` Robert Hancock
2013-03-22  1:24     ` Greg KH [this message]
2013-03-22 15:39     ` Myron Stowe
2013-03-22 15:55       ` Robert Hancock
2013-03-22 16:46         ` Myron Stowe
2013-03-22 19:52           ` Elliott, Robert (Server Storage)
2013-04-04 18:06     ` Bjorn Helgaas
2013-04-06  8:49       ` James Bottomley
2013-04-08 17:29         ` Bjorn Helgaas
2013-03-21  4:35 ` [PATCH 3/3] PCI, scsi, ahci: Unify usages of 0x1b4b vendor ID to use PCI_VENDOR_ID_MARVELL_EXT Myron Stowe

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=20130322012455.GB2009@kroah.com \
    --to=greg@kroah.com \
    --cc=alex.williamson@redhat.com \
    --cc=bhelgaas@google.com \
    --cc=hancockrwd@gmail.com \
    --cc=kay@vrfy.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=myron.stowe@redhat.com \
    --cc=yuxiangl@marvell.com \
    --cc=yxlraid@gmail.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