Lines Matching refs:file

82 	cpy = ofdt->max_fds * sizeof(struct file *);  in copy_fdtable()
83 set = (nfdt->max_fds - ofdt->max_fds) * sizeof(struct file *); in copy_fdtable()
102 nr /= (1024 / sizeof(struct file *)); in alloc_fdtable()
104 nr *= (1024 / sizeof(struct file *)); in alloc_fdtable()
120 data = kvmalloc_array(nr, sizeof(struct file *), GFP_KERNEL_ACCOUNT); in alloc_fdtable()
290 struct file **old_fds, **new_fds; in dup_fd()
354 struct file *f = *old_fds++; in dup_fd()
371 memset(new_fds, 0, (new_fdt->max_fds - open_files) * sizeof(struct file *)); in dup_fd()
401 struct file * file = xchg(&fdt->fd[i], NULL); in close_files() local
402 if (file) { in close_files()
403 filp_close(file, files); in close_files()
573 void fd_install(unsigned int fd, struct file *file) in fd_install() argument
585 rcu_assign_pointer(fdt->fd[fd], file); in fd_install()
593 rcu_assign_pointer(fdt->fd[fd], file); in fd_install()
609 static struct file *pick_file(struct files_struct *files, unsigned fd) in pick_file()
611 struct file *file; in pick_file() local
617 file = ERR_PTR(-EINVAL); in pick_file()
620 file = fdt->fd[fd]; in pick_file()
621 if (!file) { in pick_file()
622 file = ERR_PTR(-EBADF); in pick_file()
630 return file; in pick_file()
636 struct file *file; in close_fd() local
638 file = pick_file(files, fd); in close_fd()
639 if (IS_ERR(file)) in close_fd()
642 return filp_close(file, files); in close_fd()
677 struct file *file; in __range_close() local
679 file = pick_file(cur_fds, fd++); in __range_close()
680 if (!IS_ERR(file)) { in __range_close()
682 filp_close(file, cur_fds); in __range_close()
688 if (PTR_ERR(file) == -EINVAL) in __range_close()
769 int __close_fd_get_file(unsigned int fd, struct file **res) in __close_fd_get_file()
772 struct file *file; in __close_fd_get_file() local
778 file = fdt->fd[fd]; in __close_fd_get_file()
779 if (!file) in __close_fd_get_file()
783 get_file(file); in __close_fd_get_file()
784 *res = file; in __close_fd_get_file()
796 int close_fd_get_file(unsigned int fd, struct file **res) in close_fd_get_file()
826 struct file *file; in do_close_on_exec() local
829 file = fdt->fd[fd]; in do_close_on_exec()
830 if (!file) in do_close_on_exec()
835 filp_close(file, files); in do_close_on_exec()
844 static inline struct file *__fget_files_rcu(struct files_struct *files, in __fget_files_rcu()
848 struct file *file; in __fget_files_rcu() local
850 struct file __rcu **fdentry; in __fget_files_rcu()
856 file = rcu_dereference_raw(*fdentry); in __fget_files_rcu()
857 if (unlikely(!file)) in __fget_files_rcu()
860 if (unlikely(file->f_mode & mask)) in __fget_files_rcu()
874 if (unlikely(!get_file_rcu_many(file, refs))) in __fget_files_rcu()
886 unlikely(rcu_dereference_raw(*fdentry) != file)) { in __fget_files_rcu()
887 fput_many(file, refs); in __fget_files_rcu()
895 return file; in __fget_files_rcu()
899 static struct file *__fget_files(struct files_struct *files, unsigned int fd, in __fget_files()
902 struct file *file; in __fget_files() local
905 file = __fget_files_rcu(files, fd, mask, refs); in __fget_files()
908 return file; in __fget_files()
911 static inline struct file *__fget(unsigned int fd, fmode_t mask, in __fget()
917 struct file *fget_many(unsigned int fd, unsigned int refs) in fget_many()
922 struct file *fget(unsigned int fd) in fget()
928 struct file *fget_raw(unsigned int fd) in fget_raw()
934 struct file *fget_task(struct task_struct *task, unsigned int fd) in fget_task()
936 struct file *file = NULL; in fget_task() local
940 file = __fget_files(task->files, fd, 0, 1); in fget_task()
943 return file; in fget_task()
946 struct file *task_lookup_fd_rcu(struct task_struct *task, unsigned int fd) in task_lookup_fd_rcu()
950 struct file *file = NULL; in task_lookup_fd_rcu() local
955 file = files_lookup_fd_rcu(files, fd); in task_lookup_fd_rcu()
958 return file; in task_lookup_fd_rcu()
961 struct file *task_lookup_next_fd_rcu(struct task_struct *task, unsigned int *ret_fd) in task_lookup_next_fd_rcu()
966 struct file *file = NULL; in task_lookup_next_fd_rcu() local
972 file = files_lookup_fd_rcu(files, fd); in task_lookup_next_fd_rcu()
973 if (file) in task_lookup_next_fd_rcu()
979 return file; in task_lookup_next_fd_rcu()
1001 struct file *file; in __fget_light() local
1004 file = files_lookup_fd_raw(files, fd); in __fget_light()
1005 if (!file || unlikely(file->f_mode & mask)) in __fget_light()
1007 return (unsigned long)file; in __fget_light()
1009 file = __fget(fd, mask, 1); in __fget_light()
1010 if (!file) in __fget_light()
1012 return FDPUT_FPUT | (unsigned long)file; in __fget_light()
1029 struct file *file = (struct file *)(v & ~3); in __fdget_pos() local
1031 if (file && (file->f_mode & FMODE_ATOMIC_POS)) { in __fdget_pos()
1032 if (file_count(file) > 1) { in __fdget_pos()
1034 mutex_lock(&file->f_pos_lock); in __fdget_pos()
1040 void __f_unlock_pos(struct file *f) in __f_unlock_pos()
1077 struct file *file, unsigned fd, unsigned flags) in do_dup2() argument
1080 struct file *tofree; in do_dup2()
1101 get_file(file); in do_dup2()
1102 rcu_assign_pointer(fdt->fd[fd], file); in do_dup2()
1120 int replace_fd(unsigned fd, struct file *file, unsigned flags) in replace_fd() argument
1125 if (!file) in replace_fd()
1135 return do_dup2(files, file, fd, flags); in replace_fd()
1157 int __receive_fd(struct file *file, int __user *ufd, unsigned int o_flags) in __receive_fd() argument
1162 error = security_file_receive(file); in __receive_fd()
1178 fd_install(new_fd, get_file(file)); in __receive_fd()
1179 __receive_sock(file); in __receive_fd()
1183 int receive_fd_replace(int new_fd, struct file *file, unsigned int o_flags) in receive_fd_replace() argument
1187 error = security_file_receive(file); in receive_fd_replace()
1190 error = replace_fd(new_fd, file, o_flags); in receive_fd_replace()
1193 __receive_sock(file); in receive_fd_replace()
1197 int receive_fd(struct file *file, unsigned int o_flags) in receive_fd() argument
1199 return __receive_fd(file, NULL, o_flags); in receive_fd()
1206 struct file *file; in ksys_dup3() local
1220 file = files_lookup_fd_locked(files, oldfd); in ksys_dup3()
1221 if (unlikely(!file)) in ksys_dup3()
1228 return do_dup2(files, file, newfd, flags); in ksys_dup3()
1260 struct file *file = fget_raw(fildes); in SYSCALL_DEFINE1() local
1262 if (file) { in SYSCALL_DEFINE1()
1265 fd_install(ret, file); in SYSCALL_DEFINE1()
1267 fput(file); in SYSCALL_DEFINE1()
1272 int f_dupfd(unsigned int from, struct file *file, unsigned flags) in f_dupfd() argument
1280 get_file(file); in f_dupfd()
1281 fd_install(err, file); in f_dupfd()
1287 int (*f)(const void *, struct file *, unsigned), in iterate_fd() argument
1296 struct file *file; in iterate_fd() local
1297 file = rcu_dereference_check_fdtable(files, fdt->fd[n]); in iterate_fd()
1298 if (!file) in iterate_fd()
1300 res = f(p, file, n); in iterate_fd()