Re: [PATCH 1/1] libfuse: don't put HAVE_STATX in a public header

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

 



On Thu, Aug 21, 2025 at 11:39:25PM +0200, Bernd Schubert wrote:
> 
> 
> On 8/21/25 03:01, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@xxxxxxxxxx>
> > 
> > fuse.h and fuse_lowlevel.h are public headers, don't expose internal
> > build system config variables to downstream clients.  This can also lead
> > to function pointer ordering issues if (say) libfuse gets built with
> > HAVE_STATX but the client program doesn't define a HAVE_STATX.
> > 
> > Get rid of the conditionals in the public header files to fix this.
> > 
> > Signed-off-by: "Darrick J. Wong" <djwong@xxxxxxxxxx>
> > ---
> >  include/fuse.h           |    2 --
> >  include/fuse_lowlevel.h  |    2 --
> >  example/memfs_ll.cc      |    2 +-
> >  example/passthrough.c    |    2 +-
> >  example/passthrough_fh.c |    2 +-
> >  example/passthrough_ll.c |    2 +-
> >  6 files changed, 4 insertions(+), 8 deletions(-)
> > 
> > 
> > diff --git a/include/fuse.h b/include/fuse.h
> > index 06feacb070fbfb..209102651e9454 100644
> > --- a/include/fuse.h
> > +++ b/include/fuse.h
> > @@ -854,7 +854,6 @@ struct fuse_operations {
> >  	 */
> >  	off_t (*lseek) (const char *, off_t off, int whence, struct fuse_file_info *);
> >  
> > -#ifdef HAVE_STATX
> >  	/**
> >  	 * Get extended file attributes.
> >  	 *
> > @@ -865,7 +864,6 @@ struct fuse_operations {
> >  	 */
> >  	int (*statx)(const char *path, int flags, int mask, struct statx *stxbuf,
> >  		     struct fuse_file_info *fi);
> > -#endif
> >  };
> >  
> >  /** Extra context that may be needed by some filesystems
> > diff --git a/include/fuse_lowlevel.h b/include/fuse_lowlevel.h
> > index 844ee710295973..8d87be413bfe37 100644
> > --- a/include/fuse_lowlevel.h
> > +++ b/include/fuse_lowlevel.h
> > @@ -1327,7 +1327,6 @@ struct fuse_lowlevel_ops {
> >  	void (*tmpfile) (fuse_req_t req, fuse_ino_t parent,
> >  			mode_t mode, struct fuse_file_info *fi);
> >  
> > -#ifdef HAVE_STATX
> >  	/**
> >  	 * Get extended file attributes.
> >  	 *
> > @@ -1343,7 +1342,6 @@ struct fuse_lowlevel_ops {
> >  	 */
> >  	void (*statx)(fuse_req_t req, fuse_ino_t ino, int flags, int mask,
> >  		      struct fuse_file_info *fi);
> > -#endif
> >  };
> >  
> >  /**
> > diff --git a/example/memfs_ll.cc b/example/memfs_ll.cc
> > index edda34b4e43d39..7055a434a439cd 100644
> > --- a/example/memfs_ll.cc
> > +++ b/example/memfs_ll.cc
> > @@ -6,7 +6,7 @@
> >    See the file GPL2.txt.
> >  */
> >  
> > -#define FUSE_USE_VERSION 317
> > +#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 18)
> >  
> >  #include <algorithm>
> >  #include <stdio.h>
> > diff --git a/example/passthrough.c b/example/passthrough.c
> > index fdaa19e331a17d..1f09c2dc05df1e 100644
> > --- a/example/passthrough.c
> > +++ b/example/passthrough.c
> > @@ -23,7 +23,7 @@
> >   */
> >  
> >  
> > -#define FUSE_USE_VERSION 31
> > +#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 18)
> >  
> >  #define _GNU_SOURCE
> >  
> > diff --git a/example/passthrough_fh.c b/example/passthrough_fh.c
> > index 0d4fb5bd4df0d6..6403fbb74c7759 100644
> > --- a/example/passthrough_fh.c
> > +++ b/example/passthrough_fh.c
> > @@ -23,7 +23,7 @@
> >   * \include passthrough_fh.c
> >   */
> >  
> > -#define FUSE_USE_VERSION 31
> > +#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 18)
> >  
> >  #define _GNU_SOURCE
> >  
> > diff --git a/example/passthrough_ll.c b/example/passthrough_ll.c
> > index 5ca6efa2300abe..8a5ac2e9226b59 100644
> > --- a/example/passthrough_ll.c
> > +++ b/example/passthrough_ll.c
> > @@ -35,7 +35,7 @@
> >   */
> >  
> >  #define _GNU_SOURCE
> > -#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 12)
> > +#define FUSE_USE_VERSION FUSE_MAKE_VERSION(3, 18)
> >  
> >  #include <fuse_lowlevel.h>
> >  #include <unistd.h>
> > 
> 
> 
> Thanks, I'm going to apply it to libfuse tomorrow. I think the version
> update in the examples is not strictly needed, but doesn't hurt either.

Thank you!

Yeah, I don't think the examples updates are strictly necessary either,
but the examples might as well give full access to someone who wants to
copy-paste them into a new server.

--D

> 
> Thanks,
> Bernd




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

  Powered by Linux