Zitat von Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>:
On Thu, May 17, 2018 at 07:03:30PM +0200, Guido Kiener wrote:
+/*
+ * usbtmc_message->flags:
+ */
+#define USBTMC_FLAG_ASYNC 0x0001
+#define USBTMC_FLAG_APPEND 0x0002
+#define USBTMC_FLAG_IGNORE_TRAILER 0x0004
+
+struct usbtmc_message {
+ void __user *message; /* pointer to header and data */
+ __u64 transfer_size; /* size of bytes to transfer */
+ __u64 transferred; /* size of received/written bytes */
+ __u32 flags; /* bit 0: 0 = synchronous; 1 = asynchronous */
+} __attribute__ ((packed));
Very odd structure. Your userspace pointer is going to be totally out
of alignment on 32bit systems running on a 64bit kernel. Why have a
separate pointer at all? Why not just put the mesage at the end of this
structure directly with something like:
__u8 message[0];
?
Oh yes, I should know that from another project. Indead we did not test it
with 32 bit applications on 64 platforms.
When we use your proposal then we just can use
#define USBTMC_IOCTL_WRITE _IO(USBTMC_IOC_NR, 13)?
Much easier and you don't have to mess with the whole compatible ioctl
thunking layer (which I think you ignored here, which means you all
didn't test it...)
thanks,
greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html