Re: [PATCH] udevadm-info: Don't access sysfs 'resource<N>' files
From: Alex Williamson
Date: Mon Mar 18 2013 - 12:51:14 EST
On Mon, 2013-03-18 at 09:41 -0700, Greg KH wrote:
> On Mon, Mar 18, 2013 at 10:24:40AM -0600, Alex Williamson wrote:
> > On Sun, 2013-03-17 at 15:00 +0100, Kay Sievers wrote:
> > > On Sun, Mar 17, 2013 at 2:38 PM, Alex Williamson
> > > <alex.williamson@xxxxxxxxxx> wrote:
> > > > I'm assuming that the device only breaks because udevadm is dumping the
> > > > full I/O port register space of the device and that if an actual driver
> > > > was interacting with it through this interface that it would work. Who
> > > > knows how many devices will have read side-effects by udevadm blindly
> > > > dumping these files. Thanks,
> > >
> > > Sysfs is a too public interface to export things there which make
> > > devices/driver choke on a simple read() of an attribute.
> > That's why the default permissions for the file do not allow users to
> > read it. I wish we could do something as clever as the MMIO resource
> > files, but I/O port spaces don't allow mmap for the predominant
> > architecture. Eventually VFIO is meant to replace this access and does
> > move device register access behind ioctls, but for now legacy KVM device
> > assignment relies on these files and so might some UIO drivers.
> > > This is nothing specific to udevadm, any tool can do that. Udevadm
> > > will never read any of the files during normal operation. The admin
> > > explicitly asked udevadm with a specific command to dump all the stuff
> > > the device offers.
> > Isn't it possible udevadm could drop privileges or filter out non-world
> > readable files?
> And you are going to do the same thing for bash? All other shells?
> Come on, the user specifically asked to read this file, as root, and
> udev did so. Just like bash would.
> Please fix the kernel if this is a real problem, you aren't going to be
> able to patch all userspace programs, that's not the proper solution
At least for KVM the kernel fix is the addition of the vfio driver which
gives us a non-sysfs way to do this. If this problem was found a few
years later and we were ready to make the switch I'd support just
removing these resource files. In the meantime we have userspace that
depends on this interface, so I'm open to suggestions how to fix it.
If we want to blacklist this specific device, that's fine, but as others
have pointed out it's really a class problem. Perhaps we report 1 byte
extra for the file length where EOF-1 is an enable byte? Is there
anything else in file ops that we could use to make it slightly more
complicated than open(), read() to access the device? Thanks,
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/