Commit 12fe820f authored by Thomas Weißschuh's avatar Thomas Weißschuh Committed by Johannes Berg
Browse files

x86/um/vdso: Panic when vDSO can not be allocated



The vDSO address is added to the userspace auxiliary vectors even if the
vDSO was not allocated. When accessing the page, userspace processes
will crash.

Enforce that the allocation works.

Signed-off-by: default avatarThomas Weißschuh <linux@weissschuh.net>
Link: https://patch.msgid.link/20251013-uml-vdso-cleanup-v1-3-a079c7adcc69@weissschuh.net


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 8c0fbd6a
Loading
Loading
Loading
Loading
+1 −11
Original line number Diff line number Diff line
@@ -10,7 +10,6 @@
#include <asm/elf.h>
#include <linux/init.h>

static unsigned int __read_mostly vdso_enabled = 1;
unsigned long um_vdso_addr;
static struct page *um_vdso;

@@ -25,17 +24,11 @@ static int __init init_vdso(void)

	um_vdso = alloc_page(GFP_KERNEL);
	if (!um_vdso)
		goto oom;
		panic("Cannot allocate vdso\n");

	copy_page(page_address(um_vdso), vdso_start);

	return 0;

oom:
	printk(KERN_ERR "Cannot allocate vdso\n");
	vdso_enabled = 0;

	return -ENOMEM;
}
subsys_initcall(init_vdso);

@@ -48,9 +41,6 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
		.pages = &um_vdso,
	};

	if (!vdso_enabled)
		return 0;

	if (mmap_write_lock_killable(mm))
		return -EINTR;