On Thu 20-03-25 10:23:31, Mateusz Guzik wrote: > Otherwise gcc 13 generates conditional forward jumps (aka branch > mispredict by default) for build_open_flags() being succesfull. > > Signed-off-by: Mateusz Guzik <mjguzik@xxxxxxxxx> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > > maybe i'll get around to do it a full pass instead of sending byte-sized > patchen. someone(tm) should definitely do it. > > fs/open.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/fs/open.c b/fs/open.c > index bdbf03f799a1..a9063cca9911 100644 > --- a/fs/open.c > +++ b/fs/open.c > @@ -1413,18 +1413,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); > -- > 2.43.0 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR