projects
/
linux-block.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
9ae7e5a
)
fs: tidy up do_sys_openat2() with likely/unlikely
author
Mateusz Guzik
<mjguzik@gmail.com>
Thu, 20 Mar 2025 09:23:31 +0000
(10:23 +0100)
committer
Christian Brauner
<brauner@kernel.org>
Thu, 20 Mar 2025 09:41:59 +0000
(10:41 +0100)
Otherwise gcc 13 generates conditional forward jumps (aka branch
mispredict by default) for build_open_flags() being succesfull.
Signed-off-by: Mateusz Guzik <mjguzik@gmail.com>
Link:
https://lore.kernel.org/r/20250320092331.1921700-1-mjguzik@gmail.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/open.c
patch
|
blob
|
blame
|
history
diff --git
a/fs/open.c
b/fs/open.c
index 634fdca6501aa39d32eb49636b4ab93fdee02b3b..df140788077bf826a991547c8cfb07d512d373cb 100644
(file)
--- a/
fs/open.c
+++ b/
fs/open.c
@@
-1412,18
+1412,19
@@
static int do_sys_openat2(int dfd, const char __user *filename,
struct open_how *how)
{
struct open_flags op;
- int fd = build_open_flags(how, &op);
struct filename *tmp;
+ int err, fd;
- if (fd)
- return fd;
+ err = build_open_flags(how, &op);
+ if (unlikely(err))
+ return err;
tmp = getname(filename);
if (IS_ERR(tmp))
return PTR_ERR(tmp);
fd = get_unused_fd_flags(how->flags);
- if (
fd >= 0
) {
+ if (
likely(fd >= 0)
) {
struct file *f = do_filp_open(dfd, tmp, &op);
if (IS_ERR(f)) {
put_unused_fd(fd);