diff options
Diffstat (limited to 'kernel/sys.c')
| -rw-r--r-- | kernel/sys.c | 8 | 
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index 241507f23ec..0cb4283df88 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)  {  	struct file *exe_file;  	struct dentry *dentry; -	int err; +	int err, fput_needed; -	exe_file = fget(fd); +	exe_file = fget_light(fd, &fput_needed);  	if (!exe_file)  		return -EBADF; @@ -1839,12 +1839,12 @@ static int prctl_set_mm_exe_file(struct mm_struct *mm, unsigned int fd)  		goto exit_unlock;  	err = 0; -	set_mm_exe_file(mm, exe_file); +	set_mm_exe_file(mm, exe_file);	/* this grabs a reference to exe_file */  exit_unlock:  	up_write(&mm->mmap_sem);  exit: -	fput(exe_file); +	fput_light(exe_file, fput_needed);  	return err;  }  |