summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorMateusz Guzik <mguzik@redhat.com>2016-08-23 10:20:38 -0400
committerPaul Moore <paul@paul-moore.com>2016-08-31 16:11:20 -0400
commitcd81a9170e69e018bbaba547c1fd85a585f5697a (patch)
treeb0c11dc4cc55aba04e21f8c7352b8c516124cbdb /fs
parent43761473c254b45883a64441dd0bc85a42f3645c (diff)
mm: introduce get_task_exe_file
For more convenient access if one has a pointer to the task. As a minor nit take advantage of the fact that only task lock + rcu are needed to safely grab ->exe_file. This saves mm refcount dance. Use the helper in proc_exe_link. Signed-off-by: Mateusz Guzik <mguzik@redhat.com> Acked-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> Acked-by: Richard Guy Briggs <rgb@redhat.com> Cc: <stable@vger.kernel.org> # 4.3.x Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/proc/base.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 0d163a84082d..da8b1943ba04 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1552,18 +1552,13 @@ static const struct file_operations proc_pid_set_comm_operations = {
1552static int proc_exe_link(struct dentry *dentry, struct path *exe_path) 1552static int proc_exe_link(struct dentry *dentry, struct path *exe_path)
1553{ 1553{
1554 struct task_struct *task; 1554 struct task_struct *task;
1555 struct mm_struct *mm;
1556 struct file *exe_file; 1555 struct file *exe_file;
1557 1556
1558 task = get_proc_task(d_inode(dentry)); 1557 task = get_proc_task(d_inode(dentry));
1559 if (!task) 1558 if (!task)
1560 return -ENOENT; 1559 return -ENOENT;
1561 mm = get_task_mm(task); 1560 exe_file = get_task_exe_file(task);
1562 put_task_struct(task); 1561 put_task_struct(task);
1563 if (!mm)
1564 return -ENOENT;
1565 exe_file = get_mm_exe_file(mm);
1566 mmput(mm);
1567 if (exe_file) { 1562 if (exe_file) {
1568 *exe_path = exe_file->f_path; 1563 *exe_path = exe_file->f_path;
1569 path_get(&exe_file->f_path); 1564 path_get(&exe_file->f_path);