Message ID | 155790968147.1319.10247444846354273332.stgit@buzz (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/5] proc: use down_read_killable for /proc/pid/maps | expand |
On Wed 15-05-19 11:41:21, Konstantin Khlebnikov wrote: > Replace the only unkillable mmap_sem lock in clear_refs_write. Poor changelog again. The change itself looks ok to me. > Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> > --- > fs/proc/task_mmu.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c > index 78bed6adc62d..7f84d1477b5b 100644 > --- a/fs/proc/task_mmu.c > +++ b/fs/proc/task_mmu.c > @@ -1140,7 +1140,10 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf, > goto out_mm; > } > > - down_read(&mm->mmap_sem); > + if (down_read_killable(&mm->mmap_sem)) { > + count = -EINTR; > + goto out_mm; > + } > tlb_gather_mmu(&tlb, mm, 0, -1); > if (type == CLEAR_REFS_SOFT_DIRTY) { > for (vma = mm->mmap; vma; vma = vma->vm_next) {
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 78bed6adc62d..7f84d1477b5b 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -1140,7 +1140,10 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf, goto out_mm; } - down_read(&mm->mmap_sem); + if (down_read_killable(&mm->mmap_sem)) { + count = -EINTR; + goto out_mm; + } tlb_gather_mmu(&tlb, mm, 0, -1); if (type == CLEAR_REFS_SOFT_DIRTY) { for (vma = mm->mmap; vma; vma = vma->vm_next) {
Replace the only unkillable mmap_sem lock in clear_refs_write. Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> --- fs/proc/task_mmu.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)