Re: [PATCH 05/16] Add io_uring IO interface

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 16, 2019 at 11:41 AM Arnd Bergmann <arnd@xxxxxxxx> wrote:
> > +/*
> > + * IO submission data structure (Submission Queue Entry)
> > + */
> > +struct io_uring_sqe {
> > +       __u8    opcode;         /* type of operation for this sqe */
> > +       __u8    flags;          /* as of now unused */
> > +       __u16   ioprio;         /* ioprio for the request */
> > +       __s32   fd;             /* file descriptor to do IO on */
> > +       __u64   off;            /* offset into file */
> > +       union {
> > +               void    *addr;  /* buffer or iovecs */
> > +               __u64   __pad;
> > +       };
>
> It seems a bit unfortunate to keep the pointer field only
> almost compatible between 32-bit and 64-bit big-endian
> architectures, as that requires an in_compat_syscall()
> check whenever we access the pointer from the kernel.
>
> Could you use a __u64 field to store the pointer itself
> instead?

To clarify: Using the u64_to_user_ptr() helper function,
you can interpret a __u64 field in a uapi data structure
directly as a pointer. The user space side needs a similar
wrapper though.

     Arnd



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux