diff options
Diffstat (limited to 'fs/proc/base.c')
-rw-r--r-- | fs/proc/base.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c index af128b374143..ef3f7df50023 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
@@ -239,12 +239,12 @@ static ssize_t proc_pid_cmdline_read(struct file *file, char __user *buf, | |||
239 | goto out_mmput; | 239 | goto out_mmput; |
240 | } | 240 | } |
241 | 241 | ||
242 | down_read(&mm->mmap_sem); | 242 | spin_lock(&mm->arg_lock); |
243 | arg_start = mm->arg_start; | 243 | arg_start = mm->arg_start; |
244 | arg_end = mm->arg_end; | 244 | arg_end = mm->arg_end; |
245 | env_start = mm->env_start; | 245 | env_start = mm->env_start; |
246 | env_end = mm->env_end; | 246 | env_end = mm->env_end; |
247 | up_read(&mm->mmap_sem); | 247 | spin_unlock(&mm->arg_lock); |
248 | 248 | ||
249 | BUG_ON(arg_start > arg_end); | 249 | BUG_ON(arg_start > arg_end); |
250 | BUG_ON(env_start > env_end); | 250 | BUG_ON(env_start > env_end); |
@@ -927,10 +927,10 @@ static ssize_t environ_read(struct file *file, char __user *buf, | |||
927 | if (!mmget_not_zero(mm)) | 927 | if (!mmget_not_zero(mm)) |
928 | goto free; | 928 | goto free; |
929 | 929 | ||
930 | down_read(&mm->mmap_sem); | 930 | spin_lock(&mm->arg_lock); |
931 | env_start = mm->env_start; | 931 | env_start = mm->env_start; |
932 | env_end = mm->env_end; | 932 | env_end = mm->env_end; |
933 | up_read(&mm->mmap_sem); | 933 | spin_unlock(&mm->arg_lock); |
934 | 934 | ||
935 | while (count > 0) { | 935 | while (count > 0) { |
936 | size_t this_len, max_len; | 936 | size_t this_len, max_len; |