On Fri, Nov 16, 2018 at 11:52:09PM +0100, Jan Beich wrote:
> Brooks Davis <bro...@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
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to