Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5feaea3 authored by Gerald Schaefer's avatar Gerald Schaefer Committed by Martin Schwidefsky
Browse files

s390/mm: fix deadlock in unmap_hugepage_range()



git commit cd2934a3 moved the flush_tlb_range() within
__unmap_hugepage_range() inside the mm->page_table_lock, which
triggered a deadlock in s390 tlb flushing code. __tlb_flush_mm_cond()
also tries to acquire the mm->page_table_lock, but that is not needed
because all callers already have mm->mmap_sem or mm->page_table_lock,
so it can be safely removed to fix the deadlock.

Signed-off-by: default avatarGerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 5b716ac7
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -90,12 +90,10 @@ static inline void __tlb_flush_mm(struct mm_struct * mm)

static inline void __tlb_flush_mm_cond(struct mm_struct * mm)
{
	spin_lock(&mm->page_table_lock);
	if (mm->context.flush_mm) {
		__tlb_flush_mm(mm);
		mm->context.flush_mm = 0;
	}
	spin_unlock(&mm->page_table_lock);
}

/*