Darrick J. Wong
2019-Jun-26 15:35 UTC
[Ocfs2-devel] [PATCH 2/5] vfs: create a generic checking function for FS_IOC_FSSETXATTR
On Wed, Jun 26, 2019 at 05:11:33AM +0100, Al Viro wrote:> On Tue, Jun 25, 2019 at 07:32:18PM -0700, Darrick J. Wong wrote: > > --- a/fs/btrfs/ioctl.c > > +++ b/fs/btrfs/ioctl.c > > @@ -373,10 +373,9 @@ static int check_xflags(unsigned int flags) > > static int btrfs_ioctl_fsgetxattr(struct file *file, void __user *arg) > > { > > struct btrfs_inode *binode = BTRFS_I(file_inode(file)); > > - struct fsxattr fa; > > - > > - memset(&fa, 0, sizeof(fa)); > > - fa.fsx_xflags = btrfs_inode_flags_to_xflags(binode->flags); > > + struct fsxattr fa = { > > + .fsx_xflags = btrfs_inode_flags_to_xflags(binode->flags), > > + }; > > Umm... Sure, there's no padding, but still - you are going to copy that thing > to userland... How about > > static inline void simple_fill_fsxattr(struct fsxattr *fa, unsigned xflags) > { > memset(fa, 0, sizeof(*fa)); > fa->fsx_xflags = xflags; > } > > and let the compiler optimize the crap out?The v2 series used to do that, but Christoph complained that having a helper for a two-line memset and initialization was silly[1] so now we have this version. I don't mind reinstating it as a static inline helper, but I'd like some input from any of the btrfs developers (or you, Al) about which form is preferred. --D [1] https://lkml.org/lkml/2019/6/25/533
Christoph Hellwig
2019-Jun-26 15:43 UTC
[Ocfs2-devel] [PATCH 2/5] vfs: create a generic checking function for FS_IOC_FSSETXATTR
On Wed, Jun 26, 2019 at 08:35:42AM -0700, Darrick J. Wong wrote:> > static inline void simple_fill_fsxattr(struct fsxattr *fa, unsigned xflags) > > { > > memset(fa, 0, sizeof(*fa)); > > fa->fsx_xflags = xflags; > > } > > > > and let the compiler optimize the crap out? > > The v2 series used to do that, but Christoph complained that having a > helper for a two-line memset and initialization was silly[1] so now we > have this version. > > I don't mind reinstating it as a static inline helper, but I'd like some > input from any of the btrfs developers (or you, Al) about which form is > preferred.I complained having that helper in btrfs. I think Al wants a generic one, which at least makes a little more sense. That being said I wonder if we should lift these attr ioctls to file op methods and deal with all that crap in VFS code instead of having all those duplicated ioctl parsers.