riscv: fix locking violation in page fault handler

When a user mode process accesses an address in the vmalloc area
do_page_fault tries to unlock the mmap semaphore when it isn't locked.

Signed-off-by: Andreas Schwab <schwab@suse.de>
[Palmer: Duplicated code instead of a goto]
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
This commit is contained in:
Andreas Schwab 2019-05-07 09:36:46 +02:00 коммит произвёл Palmer Dabbelt
Родитель a967a289f1
Коммит 8fef9900d4
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: EF4CA1502CCBAB41
1 изменённых файлов: 2 добавлений и 1 удалений

Просмотреть файл

@ -229,8 +229,9 @@ vmalloc_fault:
pte_t *pte_k;
int index;
/* User mode accesses just cause a SIGSEGV */
if (user_mode(regs))
goto bad_area;
return do_trap(regs, SIGSEGV, code, addr, tsk);
/*
* Synchronize this task's top level page-table