android_kernel_xiaomi_sm8450/fs/proc
Eric W. Biederman 4d037e1173 proc/fd: In proc_fd_link use fget_task
[ Upstream commit 439be32656035d3239fd56f9b83353ec06cb3b45 ]

When discussing[1] exec and posix file locks it was realized that none
of the callers of get_files_struct fundamentally needed to call
get_files_struct, and that by switching them to helper functions
instead it will both simplify their code and remove unnecessary
increments of files_struct.count.  Those unnecessary increments can
result in exec unnecessarily unsharing files_struct which breaking
posix locks, and it can result in fget_light having to fallback to
fget reducing system performance.

Simplifying proc_fd_link is a little bit tricky.  It is necessary to
know that there is a reference to fd_f	 ile while path_get is running.
This reference can either be guaranteed to exist either by locking the
fdtable as the code currently does or by taking a reference on the
file in question.

Use fget_task to remove the need for get_files_struct and
to take a reference to file in question.

[1] https://lkml.kernel.org/r/20180915160423.GA31461@redhat.com
Suggested-by: Oleg Nesterov <oleg@redhat.com>
v1: https://lkml.kernel.org/r/20200817220425.9389-8-ebiederm@xmission.com
Link: https://lkml.kernel.org/r/20201120231441.29911-6-ebiederm@xmission.com
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-06-21 14:52:47 +02:00
..
array.c seccomp: Fix CONFIG tests for Seccomp_filters 2021-05-14 09:50:24 +02:00
base.c proc: fix a dentry lock race between release_task and lookup 2023-09-23 11:01:10 +02:00
bootconfig.c proc: bootconfig: Add null pointer check 2022-04-08 14:40:42 +02:00
cmdline.c
consoles.c
cpuinfo.c proc/cpuinfo: switch to ->read_iter 2020-11-06 10:05:18 -08:00
devices.c block: move block-related definitions out of fs.h 2020-06-24 09:16:02 -06:00
fd.c proc/fd: In proc_fd_link use fget_task 2024-06-21 14:52:47 +02:00
fd.h
generic.c proc: fix dentry/inode overinstantiating under /proc/${pid}/net 2022-06-09 10:21:17 +02:00
inode.c proc: wire up generic_file_splice_read for iter ops 2020-11-06 10:05:18 -08:00
internal.h proc: fix lookup in /proc/net subdirectories after setns(2) 2020-12-30 11:53:56 +01:00
interrupts.c
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
kcore.c arm: remove CONFIG_ARCH_HAS_HOLES_MEMORYMODEL 2022-05-15 20:00:09 +02:00
kmsg.c
loadavg.c
Makefile
meminfo.c proc/meminfo: avoid open coded reading of vm_committed_as 2020-08-07 11:33:26 -07:00
namespaces.c
nommu.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
page.c mm: Add PG_arch_2 page flag 2020-09-04 12:46:06 +01:00
proc_net.c proc: fix dentry/inode overinstantiating under /proc/${pid}/net 2022-06-09 10:21:17 +02:00
proc_sysctl.c watchdog: move softlockup_panic back to early_param 2023-11-28 16:54:56 +00:00
proc_tty.c
root.c proc: s_fs_info may be NULL when proc_kill_sb is called 2020-06-10 14:54:54 -05:00
self.c Revert "proc: don't allow async path resolution of /proc/self components" 2023-01-04 11:39:24 +01:00
softirqs.c
stat.c fs/proc/uptime.c: Fix idle time reporting in /proc/uptime 2021-11-18 14:03:56 +01:00
task_mmu.c mm: hugetlb: proc: check for hugetlb shared PMD in /proc/PID/smaps 2023-02-15 17:22:19 +01:00
task_nommu.c proc: nommu: /proc/<pid>/maps: release mmap read lock 2023-10-10 21:53:35 +02:00
thread_self.c Revert "proc: don't allow async path resolution of /proc/thread-self components" 2023-01-04 11:39:24 +01:00
uptime.c fs/proc/uptime.c: Fix idle time reporting in /proc/uptime 2021-11-18 14:03:56 +01:00
util.c
version.c
vmcore.c proc/vmcore: fix clearing user buffer by properly using clear_user() 2021-12-01 09:19:02 +01:00