On Mon, 6 Jul 2020 14:49:43 +0200 Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > +struct mon_bin_get { > > + struct mon_bin_hdr __user *hdr; /* Can be 48 bytes or 64. */ > > + void __user *data; > > + size_t alloc; /* Length of data (can be zero) */ > > is size_t a value we can pass across user/kernel boundry? Are you sure > this isn't __kernel_size_t? Sorry, it was my fault letting that one through. Since currently the definitions are separate, userland uses their size_t, and kernel uses in-kernel size_t. We have a set of MON_IOCX_GET and MON_IOCX_GET32 with the same base number 6, but using mon_bin_get32, so the resulting ioctl number magically matched what 32- and 64-bit applications used. We don't even need an adaptation layer that re-encodes the argument structure. Not sure how to resolve this properly once we attempt to export the structures. Something for the patch submitter to work out, I suppose. -- Pere