diff options
author | Alexander Gordeev <agordeev@linux.ibm.com> | 2020-03-23 11:38:37 +0300 |
---|---|---|
committer | Vasily Gorbik <gor@linux.ibm.com> | 2020-03-27 12:22:46 +0300 |
commit | 712fa5f294f377ee3103c36c178e7d62c65dd108 (patch) | |
tree | 552c7e28c4cd56ea9b8e906931b8fbe27783884f /arch/s390/include/asm/pgalloc.h | |
parent | 194f75706b86847d1b4237958f7d6bd7ea7baf42 (diff) | |
download | linux-712fa5f294f377ee3103c36c178e7d62c65dd108.tar.xz |
s390/mm: cleanup arch_get_unmapped_area() and friends
Factor out check_asce_limit() function and fix few style
defects in arch_get_unmapped_area() family of functions.
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
[heiko.carstens@de.ibm.com: small coding style changes]
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Diffstat (limited to 'arch/s390/include/asm/pgalloc.h')
-rw-r--r-- | arch/s390/include/asm/pgalloc.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/s390/include/asm/pgalloc.h b/arch/s390/include/asm/pgalloc.h index 77606c4acd58..f0d7457fa1da 100644 --- a/arch/s390/include/asm/pgalloc.h +++ b/arch/s390/include/asm/pgalloc.h @@ -48,6 +48,20 @@ static inline unsigned long pgd_entry_type(struct mm_struct *mm) int crst_table_upgrade(struct mm_struct *mm, unsigned long limit); void crst_table_downgrade(struct mm_struct *); +static inline unsigned long check_asce_limit(struct mm_struct *mm, unsigned long addr, + unsigned long len) +{ + int rc; + + if (addr + len > mm->context.asce_limit && + addr + len <= TASK_SIZE) { + rc = crst_table_upgrade(mm, addr + len); + if (rc) + return (unsigned long) rc; + } + return addr; +} + static inline p4d_t *p4d_alloc_one(struct mm_struct *mm, unsigned long address) { unsigned long *table = crst_table_alloc(mm); |