diff options
Diffstat (limited to 'fs/proc/base.c')
| -rw-r--r-- | fs/proc/base.c | 15 | 
1 files changed, 8 insertions, 7 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c index 3c231adf845..aa63d25157b 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -985,7 +985,7 @@ static ssize_t oom_score_adj_read(struct file *file, char __user *buf,  {  	struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);  	char buffer[PROC_NUMBUF]; -	int oom_score_adj = OOM_SCORE_ADJ_MIN; +	short oom_score_adj = OOM_SCORE_ADJ_MIN;  	unsigned long flags;  	size_t len; @@ -996,7 +996,7 @@ static ssize_t oom_score_adj_read(struct file *file, char __user *buf,  		unlock_task_sighand(task, &flags);  	}  	put_task_struct(task); -	len = snprintf(buffer, sizeof(buffer), "%d\n", oom_score_adj); +	len = snprintf(buffer, sizeof(buffer), "%hd\n", oom_score_adj);  	return simple_read_from_buffer(buf, count, ppos, buffer, len);  } @@ -1043,15 +1043,15 @@ static ssize_t oom_score_adj_write(struct file *file, const char __user *buf,  		goto err_task_lock;  	} -	if (oom_score_adj < task->signal->oom_score_adj_min && +	if ((short)oom_score_adj < task->signal->oom_score_adj_min &&  			!capable(CAP_SYS_RESOURCE)) {  		err = -EACCES;  		goto err_sighand;  	} -	task->signal->oom_score_adj = oom_score_adj; +	task->signal->oom_score_adj = (short)oom_score_adj;  	if (has_capability_noaudit(current, CAP_SYS_RESOURCE)) -		task->signal->oom_score_adj_min = oom_score_adj; +		task->signal->oom_score_adj_min = (short)oom_score_adj;  	trace_oom_score_adj_update(task);  err_sighand: @@ -1877,8 +1877,9 @@ static struct dentry *proc_map_files_lookup(struct inode *dir,  	if (!vma)  		goto out_no_vma; -	result = proc_map_files_instantiate(dir, dentry, task, -			(void *)(unsigned long)vma->vm_file->f_mode); +	if (vma->vm_file) +		result = proc_map_files_instantiate(dir, dentry, task, +				(void *)(unsigned long)vma->vm_file->f_mode);  out_no_vma:  	up_read(&mm->mmap_sem);  |