On Thu, Apr 16, 2026 at 5:41 PM Aleksa Sarai <[email protected]> wrote: > > On 2026-03-28, Dorjoy Chowdhury <[email protected]> wrote: > > This flag indicates the path should be opened if it's a regular file. > > This is useful to write secure programs that want to avoid being > > tricked into opening device nodes with special semantics while thinking > > they operate on regular files. This is a requested feature from the > > uapi-group[1]. > > > > A corresponding error code EFTYPE has been introduced. For example, if > > openat2 is called on path /dev/null with OPENAT2_REGULAR in the flag > > param, it will return -EFTYPE. EFTYPE is already used in BSD systems > > like FreeBSD, macOS. > > > > When used in combination with O_CREAT, either the regular file is > > created, or if the path already exists, it is opened if it's a regular > > file. Otherwise, -EFTYPE is returned. > > > > When OPENAT2_REGULAR is combined with O_DIRECTORY, -EINVAL is returned > > as it doesn't make sense to open a path that is both a directory and a > > regular file. > > > > [1]: > > https://uapi-group.org/kernel-features/#ability-to-only-open-regular-files > > > > Signed-off-by: Dorjoy Chowdhury <[email protected]> > > --- > > Aside from the nit below, feel free to take a > > Reviewed-by: Aleksa Sarai <[email protected]> >
Thanks for reviewing! > > diff --git a/fs/open.c b/fs/open.c > > index 681d405bc61e..a6f445f72181 100644 > > --- a/fs/open.c > > +++ b/fs/open.c > > @@ -960,7 +960,7 @@ static int do_dentry_open(struct file *f, > > if (f->f_mapping->a_ops && f->f_mapping->a_ops->direct_IO) > > f->f_mode |= FMODE_CAN_ODIRECT; > > > > - f->f_flags &= ~(O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC); > > + f->f_flags &= ~(O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC | > > OPENAT2_REGULAR); > > It's not clear to me why you dropped this, I didn't see a review > mentioning it either. (General note: Ideally the cover letter changelog > would mention who suggested a change in brackets after the changelog > line so it's easier to track where a change might've come from.) > Thanks for the general note. I will keep that in mind. The review was from Jeff Layton in v5 https://lore.kernel.org/linux-fsdevel/[email protected]/ " 1. OPENAT2_REGULAR leaks into f_flags - do_dentry_open() strips open-time-only flags (O_CREAT|O_EXCL|O_NOCTTY|O_TRUNC) but does not strip OPENAT2_REGULAR. When a regular file is successfully opened via openat2() with this flag, the bit persists in file->f_flags and will be returned by fcntl(fd, F_GETFL)." I think it makes sense to strip off as OPENAT2_REGULAR is an open time only flag (like O_CREAT and the others already), right? Regards, Dorjoy

