svn commit: r338990 - in head/sys: compat/freebsd32 dev/pci

Konstantin Belousov kostikbel at gmail.com
Fri Nov 16 23:09:17 UTC 2018


On Fri, Nov 16, 2018 at 11:52:09PM +0100, Jan Beich wrote:
> Brooks Davis <brooks at FreeBSD.org> writes:
> 
> > Author: brooks
> > Date: Thu Sep 27 21:08:32 2018
> > New Revision: 338990
> > URL: https://svnweb.freebsd.org/changeset/base/338990
> >
> > Log:
> >   Centralize compat support for PCIOCGETCONF.
> >   
> >   The pre-7.x compat for both native and 32-bit code was already in
> >   pci_user.c. Use this infrastructure to add implement 32-bit support.
> >   This is more correct as ioctl(2) commands only have meaning in the
> >   context of a file descriptor.
> >   
> >   Reviewed by:	kib
> >   Approved by:	re (gjb)
> >   Obtained from:	CheriBSD
> >   Sponsored by:	DARPA, AFRL
> >   Differential revision:	https://reviews.freebsd.org/D17324
> 
> After this commit getdevice() from pciconf(8) and pci_find_conf() in
> tools/tools/dmardump/dmardump.c always fail in EPERM in -m32 mode.
> Found via graphics/libdrm where PCIOCGETCONF is used to get a list of
> DRM devices for use by OpenGL/Vulkan/VAAPI userland drivers.
> 
> Can you fix the regression before 12.0R or back the commit out?
> 
> https://lists.freebsd.org/pipermail/freebsd-current/2018-November/072144.html

Try this.

diff --git a/sys/dev/pci/pci_user.c b/sys/dev/pci/pci_user.c
index 380beff0d31..b6a53dd0982 100644
--- a/sys/dev/pci/pci_user.c
+++ b/sys/dev/pci/pci_user.c
@@ -945,6 +945,9 @@ pci_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *t
 	if (!(flag & FWRITE)) {
 		switch (cmd) {
 		case PCIOCGETCONF:
+#ifdef COMPAT_FREEBSD32
+	case PCIOCGETCONF32:
+#endif
 #ifdef PRE7_COMPAT
 		case PCIOCGETCONF_OLD:
 #ifdef COMPAT_FREEBSD32
@@ -962,6 +965,9 @@ pci_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *t
 
 	switch (cmd) {
 	case PCIOCGETCONF:
+#ifdef COMPAT_FREEBSD32
+	case PCIOCGETCONF32:
+#endif
 #ifdef PRE7_COMPAT
 	case PCIOCGETCONF_OLD:
 #ifdef COMPAT_FREEBSD32


More information about the svn-src-head mailing list