Message ID | 20250406235806.1637000-1-mjguzik@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/3] fs: sort out cosmetic differences between stat funcs and add predicts | expand |
On Mon, 07 Apr 2025 01:58:04 +0200, Mateusz Guzik wrote: > This is a nop, but I did verify asm improves. > > Applied to the vfs-6.16.misc branch of the vfs/vfs.git tree. Patches in the vfs-6.16.misc branch should appear in linux-next soon. Please report any outstanding bugs that were missed during review in a new review to the original patch series allowing us to drop it. It's encouraged to provide Acked-bys and Reviewed-bys even though the patch has now been applied. If possible patch trailers will be updated. Note that commit hashes shown below are subject to change due to rebase, trailer updates or similar. If in doubt, please check the listed branch. tree: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git branch: vfs-6.16.misc [1/3] fs: sort out cosmetic differences between stat funcs and add predicts https://git.kernel.org/vfs/vfs/c/eaec2cd1670d [2/3] fs: predict not having to do anything in fdput() https://git.kernel.org/vfs/vfs/c/5f3e0b4a1f59
On Mon 07-04-25 01:58:04, Mateusz Guzik wrote: > This is a nop, but I did verify asm improves. > > Signed-off-by: Mateusz Guzik <mjguzik@gmail.com> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > fs/stat.c | 35 ++++++++++++++++++++--------------- > 1 file changed, 20 insertions(+), 15 deletions(-) > > diff --git a/fs/stat.c b/fs/stat.c > index f13308bfdc98..b79ddb83914b 100644 > --- a/fs/stat.c > +++ b/fs/stat.c > @@ -241,7 +241,7 @@ int vfs_getattr(const struct path *path, struct kstat *stat, > int retval; > > retval = security_inode_getattr(path); > - if (retval) > + if (unlikely(retval)) > return retval; > return vfs_getattr_nosec(path, stat, request_mask, query_flags); > } > @@ -421,7 +421,7 @@ SYSCALL_DEFINE2(stat, const char __user *, filename, > int error; > > error = vfs_stat(filename, &stat); > - if (error) > + if (unlikely(error)) > return error; > > return cp_old_stat(&stat, statbuf); > @@ -434,7 +434,7 @@ SYSCALL_DEFINE2(lstat, const char __user *, filename, > int error; > > error = vfs_lstat(filename, &stat); > - if (error) > + if (unlikely(error)) > return error; > > return cp_old_stat(&stat, statbuf); > @@ -443,12 +443,13 @@ SYSCALL_DEFINE2(lstat, const char __user *, filename, > SYSCALL_DEFINE2(fstat, unsigned int, fd, struct __old_kernel_stat __user *, statbuf) > { > struct kstat stat; > - int error = vfs_fstat(fd, &stat); > + int error; > > - if (!error) > - error = cp_old_stat(&stat, statbuf); > + error = vfs_fstat(fd, &stat); > + if (unlikely(error)) > + return error; > > - return error; > + return cp_old_stat(&stat, statbuf); > } > > #endif /* __ARCH_WANT_OLD_STAT */ > @@ -502,10 +503,12 @@ SYSCALL_DEFINE2(newstat, const char __user *, filename, > struct stat __user *, statbuf) > { > struct kstat stat; > - int error = vfs_stat(filename, &stat); > + int error; > > - if (error) > + error = vfs_stat(filename, &stat); > + if (unlikely(error)) > return error; > + > return cp_new_stat(&stat, statbuf); > } > > @@ -516,7 +519,7 @@ SYSCALL_DEFINE2(newlstat, const char __user *, filename, > int error; > > error = vfs_lstat(filename, &stat); > - if (error) > + if (unlikely(error)) > return error; > > return cp_new_stat(&stat, statbuf); > @@ -530,8 +533,9 @@ SYSCALL_DEFINE4(newfstatat, int, dfd, const char __user *, filename, > int error; > > error = vfs_fstatat(dfd, filename, &stat, flag); > - if (error) > + if (unlikely(error)) > return error; > + > return cp_new_stat(&stat, statbuf); > } > #endif > @@ -539,12 +543,13 @@ SYSCALL_DEFINE4(newfstatat, int, dfd, const char __user *, filename, > SYSCALL_DEFINE2(newfstat, unsigned int, fd, struct stat __user *, statbuf) > { > struct kstat stat; > - int error = vfs_fstat(fd, &stat); > + int error; > > - if (!error) > - error = cp_new_stat(&stat, statbuf); > + error = vfs_fstat(fd, &stat); > + if (unlikely(error)) > + return error; > > - return error; > + return cp_new_stat(&stat, statbuf); > } > #endif > > -- > 2.43.0 >
diff --git a/fs/stat.c b/fs/stat.c index f13308bfdc98..b79ddb83914b 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -241,7 +241,7 @@ int vfs_getattr(const struct path *path, struct kstat *stat, int retval; retval = security_inode_getattr(path); - if (retval) + if (unlikely(retval)) return retval; return vfs_getattr_nosec(path, stat, request_mask, query_flags); } @@ -421,7 +421,7 @@ SYSCALL_DEFINE2(stat, const char __user *, filename, int error; error = vfs_stat(filename, &stat); - if (error) + if (unlikely(error)) return error; return cp_old_stat(&stat, statbuf); @@ -434,7 +434,7 @@ SYSCALL_DEFINE2(lstat, const char __user *, filename, int error; error = vfs_lstat(filename, &stat); - if (error) + if (unlikely(error)) return error; return cp_old_stat(&stat, statbuf); @@ -443,12 +443,13 @@ SYSCALL_DEFINE2(lstat, const char __user *, filename, SYSCALL_DEFINE2(fstat, unsigned int, fd, struct __old_kernel_stat __user *, statbuf) { struct kstat stat; - int error = vfs_fstat(fd, &stat); + int error; - if (!error) - error = cp_old_stat(&stat, statbuf); + error = vfs_fstat(fd, &stat); + if (unlikely(error)) + return error; - return error; + return cp_old_stat(&stat, statbuf); } #endif /* __ARCH_WANT_OLD_STAT */ @@ -502,10 +503,12 @@ SYSCALL_DEFINE2(newstat, const char __user *, filename, struct stat __user *, statbuf) { struct kstat stat; - int error = vfs_stat(filename, &stat); + int error; - if (error) + error = vfs_stat(filename, &stat); + if (unlikely(error)) return error; + return cp_new_stat(&stat, statbuf); } @@ -516,7 +519,7 @@ SYSCALL_DEFINE2(newlstat, const char __user *, filename, int error; error = vfs_lstat(filename, &stat); - if (error) + if (unlikely(error)) return error; return cp_new_stat(&stat, statbuf); @@ -530,8 +533,9 @@ SYSCALL_DEFINE4(newfstatat, int, dfd, const char __user *, filename, int error; error = vfs_fstatat(dfd, filename, &stat, flag); - if (error) + if (unlikely(error)) return error; + return cp_new_stat(&stat, statbuf); } #endif @@ -539,12 +543,13 @@ SYSCALL_DEFINE4(newfstatat, int, dfd, const char __user *, filename, SYSCALL_DEFINE2(newfstat, unsigned int, fd, struct stat __user *, statbuf) { struct kstat stat; - int error = vfs_fstat(fd, &stat); + int error; - if (!error) - error = cp_new_stat(&stat, statbuf); + error = vfs_fstat(fd, &stat); + if (unlikely(error)) + return error; - return error; + return cp_new_stat(&stat, statbuf); } #endif
This is a nop, but I did verify asm improves. Signed-off-by: Mateusz Guzik <mjguzik@gmail.com> --- fs/stat.c | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-)