pciconf -lv - /dev/pci error
Robert Watson
rwatson at freebsd.org
Wed Dec 31 10:02:15 PST 2003
On Wed, 31 Dec 2003, William Michael Grim wrote:
> I have 5.1-RELEASE installed on my system, and I've never needed to do a
> "pciconf -lv" to probe the system before. However, I tried doing it
> earlier today after logging in through SSH and doing "su -" to become
> superuser. I received this error:
>
> [root at snow 09:12:42 root]# pciconf -lv
> pciconf: /dev/pci: Operation not permitted
>
> [root at snow 09:15:41 root]# ls -l /dev/pci
> crw-r--r-- 1 root wheel 251, 0 Nov 2 05:09 /dev/pci
>
> So, as you can see, the permissions are correct. Perhaps I don't have
> something compiled into my kernel? I can attach a dmesg and kernel
> config if it's necessary.
pciconf -lv appears to cause pciconf to open /dev/pci writable:
731 pciconf CALL open(0x8049a55,0x2,0)
731 pciconf NAMI "/dev/pci"
731 pciconf RET open -1 errno 13 Permission denied
And, of course, it's not writable by non-root. The attached patch causes
pciconf to open /dev/pci read-only when listing devices (apply to
usr.sbin/pciconf/pciconf.c):
Index: pciconf.c
===================================================================
RCS file: /home/ncvs/src/usr.sbin/pciconf/pciconf.c,v
retrieving revision 1.19
diff -u -r1.19 pciconf.c
--- pciconf.c 20 Jun 2003 23:59:25 -0000 1.19
+++ pciconf.c 31 Dec 2003 17:58:45 -0000
@@ -165,7 +165,7 @@
if (verbose)
load_vendors();
- fd = open(_PATH_DEVPCI, O_RDWR, 0);
+ fd = open(_PATH_DEVPCI, O_RDONLY, 0);
if (fd < 0)
err(1, "%s", _PATH_DEVPCI);
The pci_user.c code in the kernel requires that the caller hold a writable
file descriptor for most of the ioctls; the exception is PCIOCGETCONF,
which is the only ioctl pciconf's list_devs() uses. We can probably just
go ahead and commit this patch, I think. The reason a check was added to
the kernel pci ioctl code is that unaligned writes to /dev/pci can cause
faults, I believe...
Robert N M Watson FreeBSD Core Team, TrustedBSD Projects
robert at fledge.watson.org Senior Research Scientist, McAfee Research
More information about the freebsd-hackers
mailing list