Author: hselasky
Date: Thu Apr 18 19:04:07 2019
New Revision: 346356
URL: https://svnweb.freebsd.org/changeset/base/346356

Log:
  Implement flag for telling cuse(3) clients if the peer is running in 32-bit
  compat mode or not. This is useful when implementing compatibility ioctl(2)
  handlers in userspace.
  
  MFC after:            1 week
  Sponsored by:         Mellanox Technologies

Modified:
  head/lib/libcuse/cuse.3
  head/sys/fs/cuse/cuse.c
  head/sys/fs/cuse/cuse_defs.h

Modified: head/lib/libcuse/cuse.3
==============================================================================
--- head/lib/libcuse/cuse.3     Thu Apr 18 15:31:03 2019        (r346355)
+++ head/lib/libcuse/cuse.3     Thu Apr 18 19:04:07 2019        (r346356)
@@ -25,7 +25,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd October 5, 2017
+.Dd April 17, 2019
 .Dt CUSE 3
 .Os
 .Sh NAME
@@ -303,6 +303,7 @@ enum {
   CUSE_FFLAG_READ
   CUSE_FFLAG_WRITE
   CUSE_FFLAG_NONBLOCK
+  CUSE_FFLAG_COMPAT32
 
   CUSE_CMD_NONE
   CUSE_CMD_OPEN

Modified: head/sys/fs/cuse/cuse.c
==============================================================================
--- head/sys/fs/cuse/cuse.c     Thu Apr 18 15:31:03 2019        (r346355)
+++ head/sys/fs/cuse/cuse.c     Thu Apr 18 19:04:07 2019        (r346356)
@@ -51,6 +51,7 @@
 #include <sys/vnode.h>
 #include <sys/selinfo.h>
 #include <sys/ptrace.h>
+#include <sys/sysent.h>
 
 #include <machine/bus.h>
 
@@ -536,7 +537,10 @@ cuse_client_send_command_locked(struct cuse_client_com
 
        if (ioflag & IO_NDELAY)
                cuse_fflags |= CUSE_FFLAG_NONBLOCK;
-
+#if defined(__LP64__)
+       if (SV_CURPROC_FLAG(SV_ILP32))
+               cuse_fflags |= CUSE_FFLAG_COMPAT32;
+#endif
        pccmd->sub.fflags = cuse_fflags;
        pccmd->sub.data_pointer = data_ptr;
        pccmd->sub.argument = arg;

Modified: head/sys/fs/cuse/cuse_defs.h
==============================================================================
--- head/sys/fs/cuse/cuse_defs.h        Thu Apr 18 15:31:03 2019        
(r346355)
+++ head/sys/fs/cuse/cuse_defs.h        Thu Apr 18 19:04:07 2019        
(r346356)
@@ -27,7 +27,7 @@
 #ifndef _CUSE_DEFS_H_
 #define        _CUSE_DEFS_H_
 
-#define        CUSE_VERSION            0x000123
+#define        CUSE_VERSION            0x000124
 
 #define        CUSE_ERR_NONE           0
 #define        CUSE_ERR_BUSY           -1
@@ -49,6 +49,7 @@
 #define        CUSE_FFLAG_READ         1
 #define        CUSE_FFLAG_WRITE        2
 #define        CUSE_FFLAG_NONBLOCK     4
+#define        CUSE_FFLAG_COMPAT32     8 /* peer is running in 32-bit compat 
mode */
 
 #define        CUSE_DBG_NONE           0
 #define        CUSE_DBG_FULL           1


_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to