s390/gup: add missing TASK_SIZE check to get_user_pages_fast()
When walking page tables we need to make sure that everything is within bounds of the ASCE limit of the task's address space. Otherwise we might calculate e.g. a pud pointer which is not within a pud and dereference it. So check against TASK_SIZE (which is the ASCE limit) before walking page tables. Reviewed-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> Cc: stable@vger.kernel.org Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Родитель
658e5ce705
Коммит
d55c4c613f
|
@ -229,7 +229,7 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write,
|
||||||
addr = start;
|
addr = start;
|
||||||
len = (unsigned long) nr_pages << PAGE_SHIFT;
|
len = (unsigned long) nr_pages << PAGE_SHIFT;
|
||||||
end = start + len;
|
end = start + len;
|
||||||
if (end < start)
|
if ((end < start) || (end > TASK_SIZE))
|
||||||
goto slow_irqon;
|
goto slow_irqon;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Загрузка…
Ссылка в новой задаче