diff options
Diffstat (limited to 'fs/proc')
-rw-r--r-- | fs/proc/base.c | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c index dc8bca72b002..c2ac2fb123c8 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
@@ -1576,57 +1576,6 @@ static const struct file_operations proc_pid_set_comm_operations = { | |||
1576 | .release = single_release, | 1576 | .release = single_release, |
1577 | }; | 1577 | }; |
1578 | 1578 | ||
1579 | /* | ||
1580 | * We added or removed a vma mapping the executable. The vmas are only mapped | ||
1581 | * during exec and are not mapped with the mmap system call. | ||
1582 | * Callers must hold down_write() on the mm's mmap_sem for these | ||
1583 | */ | ||
1584 | void added_exe_file_vma(struct mm_struct *mm) | ||
1585 | { | ||
1586 | mm->num_exe_file_vmas++; | ||
1587 | } | ||
1588 | |||
1589 | void removed_exe_file_vma(struct mm_struct *mm) | ||
1590 | { | ||
1591 | mm->num_exe_file_vmas--; | ||
1592 | if ((mm->num_exe_file_vmas == 0) && mm->exe_file){ | ||
1593 | fput(mm->exe_file); | ||
1594 | mm->exe_file = NULL; | ||
1595 | } | ||
1596 | |||
1597 | } | ||
1598 | |||
1599 | void set_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file) | ||
1600 | { | ||
1601 | if (new_exe_file) | ||
1602 | get_file(new_exe_file); | ||
1603 | if (mm->exe_file) | ||
1604 | fput(mm->exe_file); | ||
1605 | mm->exe_file = new_exe_file; | ||
1606 | mm->num_exe_file_vmas = 0; | ||
1607 | } | ||
1608 | |||
1609 | struct file *get_mm_exe_file(struct mm_struct *mm) | ||
1610 | { | ||
1611 | struct file *exe_file; | ||
1612 | |||
1613 | /* We need mmap_sem to protect against races with removal of | ||
1614 | * VM_EXECUTABLE vmas */ | ||
1615 | down_read(&mm->mmap_sem); | ||
1616 | exe_file = mm->exe_file; | ||
1617 | if (exe_file) | ||
1618 | get_file(exe_file); | ||
1619 | up_read(&mm->mmap_sem); | ||
1620 | return exe_file; | ||
1621 | } | ||
1622 | |||
1623 | void dup_mm_exe_file(struct mm_struct *oldmm, struct mm_struct *newmm) | ||
1624 | { | ||
1625 | /* It's safe to write the exe_file pointer without exe_file_lock because | ||
1626 | * this is called during fork when the task is not yet in /proc */ | ||
1627 | newmm->exe_file = get_mm_exe_file(oldmm); | ||
1628 | } | ||
1629 | |||
1630 | static int proc_exe_link(struct inode *inode, struct path *exe_path) | 1579 | static int proc_exe_link(struct inode *inode, struct path *exe_path) |
1631 | { | 1580 | { |
1632 | struct task_struct *task; | 1581 | struct task_struct *task; |