Message ID | 20190904123607.10048-1-mst@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fuse: reserve byteswapped init opcodes | expand |
* Michael S. Tsirkin (mst@redhat.com) wrote: > virtio fs tunnels fuse over a virtio channel. One issue is two sides > might be speaking different endian-ness. To detects this, > host side looks at the opcode value in the FUSE_INIT command. > Works fine at the moment but might fail if a future version > of fuse will use such an opcode for initialization. > Let's reserve this opcode so we remember and don't do this. I think in theory that works even for normal fuse. > Same for CUSE_INIT. > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > --- > include/uapi/linux/fuse.h | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h > index 2971d29a42e4..f042e63f4aa0 100644 > --- a/include/uapi/linux/fuse.h > +++ b/include/uapi/linux/fuse.h > @@ -425,6 +425,10 @@ enum fuse_opcode { > > /* CUSE specific operations */ > CUSE_INIT = 4096, > + > + /* Reserved opcodes: helpful to detect structure endian-ness */ > + FUSE_INIT_BSWAP_RESERVED = 26 << 24, FUSE_INIT << 24 probably works? > + CUSE_INIT_BSWAP_RESERVED = 16 << 16, Dave > }; > > enum fuse_notify_code { > -- > MST -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
On Wed, Sep 04, 2019 at 08:36:33AM -0400, Michael S. Tsirkin wrote: > virtio fs tunnels fuse over a virtio channel. One issue is two sides > might be speaking different endian-ness. To detects this, > host side looks at the opcode value in the FUSE_INIT command. > Works fine at the moment but might fail if a future version > of fuse will use such an opcode for initialization. > Let's reserve this opcode so we remember and don't do this. > > Same for CUSE_INIT. > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > --- > include/uapi/linux/fuse.h | 4 ++++ > 1 file changed, 4 insertions(+) Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h index 2971d29a42e4..f042e63f4aa0 100644 --- a/include/uapi/linux/fuse.h +++ b/include/uapi/linux/fuse.h @@ -425,6 +425,10 @@ enum fuse_opcode { /* CUSE specific operations */ CUSE_INIT = 4096, + + /* Reserved opcodes: helpful to detect structure endian-ness */ + FUSE_INIT_BSWAP_RESERVED = 26 << 24, + CUSE_INIT_BSWAP_RESERVED = 16 << 16, }; enum fuse_notify_code {
virtio fs tunnels fuse over a virtio channel. One issue is two sides might be speaking different endian-ness. To detects this, host side looks at the opcode value in the FUSE_INIT command. Works fine at the moment but might fail if a future version of fuse will use such an opcode for initialization. Let's reserve this opcode so we remember and don't do this. Same for CUSE_INIT. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- include/uapi/linux/fuse.h | 4 ++++ 1 file changed, 4 insertions(+)