Revert "Revert "proc: pagemap: Hold mmap_sem during page walk""
author黄涛 <huangtao@rock-chips.com>
Sat, 30 Jul 2011 14:16:44 +0000 (22:16 +0800)
committer黄涛 <huangtao@rock-chips.com>
Sat, 30 Jul 2011 14:16:44 +0000 (22:16 +0800)
This reverts commit 2c07d75caea45852bb9a58648a6be476ffc57a02.

fs/proc/task_mmu.c

index 2a1bef9203c6e73734e7fa359873bbb45456d0ae..3f300c1a9bd096ed24683b846ca4a5ddda7f3267 100644 (file)
@@ -726,8 +726,6 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,
        down_read(&current->mm->mmap_sem);
        ret = get_user_pages(current, current->mm, uaddr, pagecount,
                             1, 0, pages, NULL);
-       up_read(&current->mm->mmap_sem);
-
        if (ret < 0)
                goto out_free;
 
@@ -776,6 +774,7 @@ out_pages:
                page_cache_release(page);
        }
 out_free:
+       up_read(&current->mm->mmap_sem);
        kfree(pages);
 out_mm:
        mmput(mm);