The merge period from kernel 2.6.28 to 2.6.29 has started. As usually happens, some of the internal structures have changed. If you now try to compile the modules that accompany the binary release (VB 2.1.0 in my case), the following compile errors are found:
CC [M] /usr/share/virtualbox/src/vboxdrv/linux/SUPDrv-linux.o /usr/share/virtualbox/src/vboxdrv/linux/SUPDrv-linux.c: In function ‘VBoxDrvLinuxCreate’: /usr/share/virtualbox/src/vboxdrv/linux/SUPDrv-linux.c:706: error: ‘struct task_struct’ has no member named ‘euid’ /usr/share/virtualbox/src/vboxdrv/linux/SUPDrv-linux.c:719: error: ‘struct task_struct’ has no member named ‘uid’ /usr/share/virtualbox/src/vboxdrv/linux/SUPDrv-linux.c:720: error: ‘struct task_struct’ has no member named ‘gid’ make[3]: *** [/usr/share/virtualbox/src/vboxdrv/linux/SUPDrv-linux.o] Error 1 These missing members are now located in struct cred referenced from task_struct. The patch for these errors is: Index: src/vboxdrv/linux/SUPDrv-linux.c =================================================================== --- src.orig/vboxdrv/linux/SUPDrv-linux.c +++ src/vboxdrv/linux/SUPDrv-linux.c @@ -703,7 +703,7 @@ static int VBoxDrvLinuxCreate(struct ino /* * Only root is allowed to access the device, enforce it! */ - if (current->euid != 0 /* root */ ) + if (current->real_cred->euid != 0 /* root */ ) { Log(("VBoxDrvLinuxCreate: euid=%d, expected 0 (root)\n", current->euid)); return -EPERM; @@ -716,8 +716,8 @@ static int VBoxDrvLinuxCreate(struct ino rc = supdrvCreateSession(&g_DevExt, true /* fUser */, (PSUPDRVSESSION *)&pSession); if (!rc) { - pSession->Uid = current->uid; - pSession->Gid = current->gid; + pSession->Uid = current->real_cred->uid; + pSession->Gid = current->real_cred->gid; } pFilp->private_data = pSession; The above patch will have to be removed to generate modules for 2.6.28 and earlier. It should only be used until 2.6.29-rc1 is released. At that point, the following patch should replace it: Index: src/vboxdrv/linux/SUPDrv-linux.c =================================================================== --- src.orig/vboxdrv/linux/SUPDrv-linux.c +++ src/vboxdrv/linux/SUPDrv-linux.c @@ -703,7 +703,11 @@ static int VBoxDrvLinuxCreate(struct ino /* * Only root is allowed to access the device, enforce it! */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) + if (current->real_cred->euid != 0 /* root */ ) +#else if (current->euid != 0 /* root */ ) +#endif { Log(("VBoxDrvLinuxCreate: euid=%d, expected 0 (root)\n", current->euid)); return -EPERM; @@ -716,8 +720,13 @@ static int VBoxDrvLinuxCreate(struct ino rc = supdrvCreateSession(&g_DevExt, true /* fUser */, (PSUPDRVSESSION *)&pSession); if (!rc) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) + pSession->Uid = current->real_cred->uid; + pSession->Gid = current->real_cred->gid; +#else pSession->Uid = current->uid; pSession->Gid = current->gid; +#endif } pFilp->private_data = pSession; ---- _______________________________________________ vbox-dev mailing list vbox-dev@virtualbox.org http://vbox.innotek.de/mailman/listinfo/vbox-dev