summaryrefslogtreecommitdiffstats
path: root/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c')
-rw-r--r--src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
index 2a77412c..6ce2a8d0 100644
--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
@@ -54,6 +54,7 @@
#include <VBox/err.h>
#include <iprt/mem.h>
#include <VBox/log.h>
+#include <VBox/VBoxLnxModInline.h>
#include <iprt/mp.h>
/** @todo figure out the exact version number */
@@ -307,12 +308,12 @@ DECLINLINE(RTGID) vboxdrvLinuxKernGid(void)
#ifdef VBOX_WITH_HARDENING
-/** Get the effective UID within the current user namespace. */
-DECLINLINE(RTUID) vboxdrvLinuxEuidInNs(void)
+/** Get the effective UID of the current process. */
+DECLINLINE(RTUID) vboxdrvLinuxEuid(void)
{
# if RTLNX_VER_MIN(2,6,29)
# if RTLNX_VER_MIN(3,5,0)
- return from_kuid(current_user_ns(), current->cred->euid);
+ return __kuid_val(current->cred->euid);
# else
return current->cred->euid;
# endif
@@ -332,6 +333,10 @@ static int __init VBoxDrvLinuxInit(void)
{
int rc;
+ /* Check if modue loading was disabled. */
+ if (!vbox_mod_should_load())
+ return -EINVAL;
+
#if RTLNX_VER_MIN(5,0,0)
spin_lock_init(&g_supdrvLinuxWrapperModuleSpinlock);
RTListInit(&g_supdrvLinuxWrapperModuleList);
@@ -487,9 +492,9 @@ static int vboxdrvLinuxCreateCommon(struct inode *pInode, struct file *pFilp, bo
* Only root is allowed to access the unrestricted device, enforce it!
*/
if ( fUnrestricted
- && vboxdrvLinuxEuidInNs() != 0 /* root */ )
+ && vboxdrvLinuxEuid() != 0 /* root */ )
{
- Log(("VBoxDrvLinuxCreate: euid=%d, expected 0 (root)\n", vboxdrvLinuxEuidInNs()));
+ Log(("VBoxDrvLinuxCreate: euid=%d, expected 0 (root)\n", vboxdrvLinuxEuid()));
return -EPERM;
}
#endif /* VBOX_WITH_HARDENING */