From 18d50e48dc24541c41012b24b9b654263331a7e5 Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Thu, 25 Oct 2018 10:16:54 +0900 Subject: [PATCH] mcctrl: lookup for alternate syscall names on newer x64 kernels (config option?), syscalls can be renamed to allow both x64 and ia32 versions to coexist. Lookup either names Change-Id: I2f55cc804d3eee948ee1ed6d18c69c75bd2f652c --- executer/kernel/mcctrl/driver.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/executer/kernel/mcctrl/driver.c b/executer/kernel/mcctrl/driver.c index 1588f63d..0a341ffc 100644 --- a/executer/kernel/mcctrl/driver.c +++ b/executer/kernel/mcctrl/driver.c @@ -235,14 +235,29 @@ struct inode_operations *mcctrl_hugetlbfs_inode_operations; static int symbols_init(void) { mcctrl_sys_mount = (void *) kallsyms_lookup_name("sys_mount"); +#if defined(CONFIG_X86_64_SMP) + if (!mcctrl_sys_mount) + mcctrl_sys_mount = + (void *) kallsyms_lookup_name("__x64_sys_mount"); +#endif if (WARN_ON(!mcctrl_sys_mount)) return -EFAULT; mcctrl_sys_umount = (void *) kallsyms_lookup_name("sys_umount"); +#if defined(CONFIG_X86_64_SMP) + if (!mcctrl_sys_umount) + mcctrl_sys_umount = + (void *) kallsyms_lookup_name("__x64_sys_umount"); +#endif if (WARN_ON(!mcctrl_sys_umount)) return -EFAULT; mcctrl_sys_unshare = (void *) kallsyms_lookup_name("sys_unshare"); +#if defined(CONFIG_X86_64_SMP) + if (!mcctrl_sys_unshare) + mcctrl_sys_unshare = + (void *) kallsyms_lookup_name("__x64_sys_unshare"); +#endif if (WARN_ON(!mcctrl_sys_unshare)) return -EFAULT; @@ -258,6 +273,11 @@ static int symbols_init(void) mcctrl_sys_readlink = (void *) kallsyms_lookup_name("sys_readlink"); +#if defined(CONFIG_X86_64_SMP) + if (!mcctrl_sys_readlink) + mcctrl_sys_readlink = + (void *) kallsyms_lookup_name("__x64_sys_readlink"); +#endif if (WARN_ON(!mcctrl_sys_readlink)) return -EFAULT;