Message ID | 20200817220425.9389-16-ebiederm@xmission.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [01/17] exec: Move unshare_files to fix posix file locking during exec | expand |
On Mon, Aug 17, 2020 at 05:04:24PM -0500, Eric W. Biederman wrote: > The function __alloc_fd was added to support binder[1]. With binder > fixed[2] there are no more users. Further with get_files_struct > removed there can be no more users of __alloc_fd that pass anything > except current->files. > > As alloc_fd just calls __alloc_fd with "files=current->files", > merge them together by transforming the files parameter into a > ocal variable initialized to current->files. > > [1] dcfadfa4ec5a ("new helper: __alloc_fd()") > [2] 44d8047f1d87 ("binder: use standard functions to allocate fds") > Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> > --- Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
diff --git a/fs/file.c b/fs/file.c index 505b2e81ad3e..221fc4f97f61 100644 --- a/fs/file.c +++ b/fs/file.c @@ -465,9 +465,9 @@ static unsigned int find_next_fd(struct fdtable *fdt, unsigned int start) /* * allocate a file descriptor, mark it busy. */ -int __alloc_fd(struct files_struct *files, - unsigned start, unsigned end, unsigned flags) +static int alloc_fd(unsigned start, unsigned end, unsigned flags) { + struct files_struct *files = current->files; unsigned int fd; int error; struct fdtable *fdt; @@ -523,14 +523,9 @@ int __alloc_fd(struct files_struct *files, return error; } -static int alloc_fd(unsigned start, unsigned end, unsigned flags) -{ - return __alloc_fd(current->files, start, end, flags); -} - int __get_unused_fd_flags(unsigned flags, unsigned long nofile) { - return __alloc_fd(current->files, 0, nofile, flags); + return alloc_fd(0, nofile, flags); } int get_unused_fd_flags(unsigned flags) diff --git a/include/linux/fdtable.h b/include/linux/fdtable.h index 4da8aacc461a..d8f6c4921d85 100644 --- a/include/linux/fdtable.h +++ b/include/linux/fdtable.h @@ -116,8 +116,6 @@ int iterate_fd(struct files_struct *, unsigned, int (*)(const void *, struct file *, unsigned), const void *); -extern int __alloc_fd(struct files_struct *files, - unsigned start, unsigned end, unsigned flags); extern int __close_fd(struct files_struct *files, unsigned int fd); extern int __close_range(unsigned int fd, unsigned int max_fd, unsigned int flags);
The function __alloc_fd was added to support binder[1]. With binder fixed[2] there are no more users. Further with get_files_struct removed there can be no more users of __alloc_fd that pass anything except current->files. As alloc_fd just calls __alloc_fd with "files=current->files", merge them together by transforming the files parameter into a ocal variable initialized to current->files. [1] dcfadfa4ec5a ("new helper: __alloc_fd()") [2] 44d8047f1d87 ("binder: use standard functions to allocate fds") Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> --- fs/file.c | 11 +++-------- include/linux/fdtable.h | 2 -- 2 files changed, 3 insertions(+), 10 deletions(-)