aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/sys.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/sys.c b/kernel/sys.c
index 241507f23eca..0cb4283df884 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -1790,9 +1790,9 @@ static int prctl_set_mm_exe_file(struct mm_struct *mm, unsigned int fd)
1790{ 1790{
1791 struct file *exe_file; 1791 struct file *exe_file;
1792 struct dentry *dentry; 1792 struct dentry *dentry;
1793 int err; 1793 int err, fput_needed;
1794 1794
1795 exe_file = fget(fd); 1795 exe_file = fget_light(fd, &fput_needed);
1796 if (!exe_file) 1796 if (!exe_file)
1797 return -EBADF; 1797 return -EBADF;
1798 1798
@@ -1839,12 +1839,12 @@ static int prctl_set_mm_exe_file(struct mm_struct *mm, unsigned int fd)
1839 goto exit_unlock; 1839 goto exit_unlock;
1840 1840
1841 err = 0; 1841 err = 0;
1842 set_mm_exe_file(mm, exe_file); 1842 set_mm_exe_file(mm, exe_file); /* this grabs a reference to exe_file */
1843exit_unlock: 1843exit_unlock:
1844 up_write(&mm->mmap_sem); 1844 up_write(&mm->mmap_sem);
1845 1845
1846exit: 1846exit:
1847 fput(exe_file); 1847 fput_light(exe_file, fput_needed);
1848 return err; 1848 return err;
1849} 1849}
1850 1850