diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2016-06-06 10:30:45 +0200 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2016-06-13 15:58:21 +0200 |
commit | a9809407f6b6b4b55df7b6cf5522e39476b7e5e6 (patch) | |
tree | 77fbe1921cbe1b71978b47d6eaf2742d1f46c73d /include/linux/bitmap.h | |
parent | fd5ada04030cb584251c381cb70daa41e984ae82 (diff) |
s390/mm: fix vunmap vs finish_arch_post_lock_switch
The vunmap_pte_range() function calls ptep_get_and_clear() without any
locking. ptep_get_and_clear() uses ptep_xchg_lazy()/ptep_flush_direct()
for the page table update. ptep_flush_direct requires that preemption
is disabled, but without any locking this is not the case. If the kernel
preempts the task while the attach_counter is increased an endless loop
in finish_arch_post_lock_switch() will occur the next time the task is
scheduled.
Add explicit preempt_disable()/preempt_enable() calls to the relevant
functions in arch/s390/mm/pgtable.c.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'include/linux/bitmap.h')
0 files changed, 0 insertions, 0 deletions