diff options
Diffstat (limited to 'fs/proc/base.c')
-rw-r--r-- | fs/proc/base.c | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c index a11eb7196ec8..2a0f5ee9b623 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
@@ -1083,15 +1083,9 @@ static ssize_t oom_adj_write(struct file *file, const char __user *buf, | |||
1083 | goto out; | 1083 | goto out; |
1084 | } | 1084 | } |
1085 | 1085 | ||
1086 | task_lock(task); | ||
1087 | if (!task->mm) { | ||
1088 | err = -EINVAL; | ||
1089 | goto err_task_lock; | ||
1090 | } | ||
1091 | |||
1092 | if (!lock_task_sighand(task, &flags)) { | 1086 | if (!lock_task_sighand(task, &flags)) { |
1093 | err = -ESRCH; | 1087 | err = -ESRCH; |
1094 | goto err_task_lock; | 1088 | goto err_put_task; |
1095 | } | 1089 | } |
1096 | 1090 | ||
1097 | /* | 1091 | /* |
@@ -1121,8 +1115,7 @@ static ssize_t oom_adj_write(struct file *file, const char __user *buf, | |||
1121 | trace_oom_score_adj_update(task); | 1115 | trace_oom_score_adj_update(task); |
1122 | err_sighand: | 1116 | err_sighand: |
1123 | unlock_task_sighand(task, &flags); | 1117 | unlock_task_sighand(task, &flags); |
1124 | err_task_lock: | 1118 | err_put_task: |
1125 | task_unlock(task); | ||
1126 | put_task_struct(task); | 1119 | put_task_struct(task); |
1127 | out: | 1120 | out: |
1128 | return err < 0 ? err : count; | 1121 | return err < 0 ? err : count; |
@@ -1186,15 +1179,9 @@ static ssize_t oom_score_adj_write(struct file *file, const char __user *buf, | |||
1186 | goto out; | 1179 | goto out; |
1187 | } | 1180 | } |
1188 | 1181 | ||
1189 | task_lock(task); | ||
1190 | if (!task->mm) { | ||
1191 | err = -EINVAL; | ||
1192 | goto err_task_lock; | ||
1193 | } | ||
1194 | |||
1195 | if (!lock_task_sighand(task, &flags)) { | 1182 | if (!lock_task_sighand(task, &flags)) { |
1196 | err = -ESRCH; | 1183 | err = -ESRCH; |
1197 | goto err_task_lock; | 1184 | goto err_put_task; |
1198 | } | 1185 | } |
1199 | 1186 | ||
1200 | if ((short)oom_score_adj < task->signal->oom_score_adj_min && | 1187 | if ((short)oom_score_adj < task->signal->oom_score_adj_min && |
@@ -1210,8 +1197,7 @@ static ssize_t oom_score_adj_write(struct file *file, const char __user *buf, | |||
1210 | 1197 | ||
1211 | err_sighand: | 1198 | err_sighand: |
1212 | unlock_task_sighand(task, &flags); | 1199 | unlock_task_sighand(task, &flags); |
1213 | err_task_lock: | 1200 | err_put_task: |
1214 | task_unlock(task); | ||
1215 | put_task_struct(task); | 1201 | put_task_struct(task); |
1216 | out: | 1202 | out: |
1217 | return err < 0 ? err : count; | 1203 | return err < 0 ? err : count; |