On Sun, Jun 02, 2024 at 09:42:38PM +0100, Al Viro wrote: > We never had callers for __close_range() except for close_range(2) > itself. Nothing of that sort has appeared in four years and if any users > do show up, we can always separate those suckers again. > > Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx> > --- Note, that the __close_range() solely existed (iirc) because want close(2) and close_range(2) shouldn't end up in two separate files because it is royally annoying to have to switch files for system calls that conceptually do very similar things. But I don't care enough so, Reviewed-by: Christian Brauner <brauner@xxxxxxxxxx> > diff --git a/fs/file.c b/fs/file.c > index 8076aef9c210..f9fcebc7c838 100644 > --- a/fs/file.c > +++ b/fs/file.c > @@ -732,7 +732,7 @@ static inline void __range_close(struct files_struct *files, unsigned int fd, > } > > /** > - * __close_range() - Close all file descriptors in a given range. > + * sys_close_range() - Close all file descriptors in a given range. > * > * @fd: starting file descriptor to close > * @max_fd: last file descriptor to close > @@ -740,8 +740,10 @@ static inline void __range_close(struct files_struct *files, unsigned int fd, > * > * This closes a range of file descriptors. All file descriptors > * from @fd up to and including @max_fd are closed. > + * Currently, errors to close a given file descriptor are ignored. > */ > -int __close_range(unsigned fd, unsigned max_fd, unsigned int flags) > +SYSCALL_DEFINE3(close_range, unsigned int, fd, unsigned int, max_fd, > + unsigned int, flags) > { > struct task_struct *me = current; > struct files_struct *cur_fds = me->files, *fds = NULL; > diff --git a/fs/open.c b/fs/open.c > index 89cafb572061..7ee11c4de4ca 100644 > --- a/fs/open.c > +++ b/fs/open.c > @@ -1564,23 +1564,6 @@ SYSCALL_DEFINE1(close, unsigned int, fd) > return retval; > } > > -/** > - * sys_close_range() - Close all file descriptors in a given range. > - * > - * @fd: starting file descriptor to close > - * @max_fd: last file descriptor to close > - * @flags: reserved for future extensions > - * > - * This closes a range of file descriptors. All file descriptors > - * from @fd up to and including @max_fd are closed. > - * Currently, errors to close a given file descriptor are ignored. > - */ > -SYSCALL_DEFINE3(close_range, unsigned int, fd, unsigned int, max_fd, > - unsigned int, flags) > -{ > - return __close_range(fd, max_fd, flags); > -} > - > /* > * This routine simulates a hangup on the tty, to arrange that users > * are given clean terminals at login time. > diff --git a/include/linux/fdtable.h b/include/linux/fdtable.h > index 2944d4aa413b..4e7d1bcca5b7 100644 > --- a/include/linux/fdtable.h > +++ b/include/linux/fdtable.h > @@ -113,7 +113,6 @@ int iterate_fd(struct files_struct *, unsigned, > const void *); > > extern int close_fd(unsigned int fd); > -extern int __close_range(unsigned int fd, unsigned int max_fd, unsigned int flags); > extern struct file *file_close_fd(unsigned int fd); > extern int unshare_fd(unsigned long unshare_flags, unsigned int max_fds, > struct files_struct **new_fdp);