s390/vdso: remove BUG_ON()
authorHeiko Carstens <hca@linux.ibm.com>
Sun, 24 Jan 2021 19:08:40 +0000 (20:08 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 9 Feb 2021 14:57:05 +0000 (15:57 +0100)
Handle allocation error gracefully and simply disable vdso instead of
leaving the system in an undefined state.

Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/kernel/vdso.c

index 7075459..f06791c 100644 (file)
@@ -175,7 +175,10 @@ static int __init vdso_init(void)
        /* Make sure pages are in the correct state */
        vdso64_pagelist = kcalloc(vdso64_pages + 1, sizeof(struct page *),
                                  GFP_KERNEL);
-       BUG_ON(vdso64_pagelist == NULL);
+       if (!vdso64_pagelist) {
+               vdso_enabled = 0;
+               return -ENOMEM;
+       }
        for (i = 0; i < vdso64_pages - 1; i++) {
                struct page *pg = virt_to_page(vdso64_kbase + i*PAGE_SIZE);
                get_page(pg);