[vbox-dev] Virtualbox is failing to build on linux 3.8.X with CONFIG_UIDGID_STRICT_TYPE_CHECKS=y

Nikita Kozlov nikita at elyzion.net
Mon Mar 4 09:52:39 PST 2013

Hello*Alex Xu* ,

In reply to 

If, in your kernel, you have enabled CONFIG_UIDGID_STRICT_TYPE_CHECKS 
(in General Setup section, which is selected by default if you have 
enabled the new user namespaces feature),
virtualbox kernel modules won't build and you will have errors like :

.../vboxdrv/linux/SUPDrv-linux.c: In function 'vboxdrvLinuxUid':
.../vboxdrv/linux/SUPDrv-linux.c:226:5: error: incompatible types when returning type 'kuid_t' but 'RTUID' was expected

It's because when that option is enabled in the kernel, kuid_t and 
kgui_t are defined as structs instead of just uid_t (which is a 
uint32_t) and the build is broken in that case.

I guess that to fix it cleanly, you will have to , in 
vbox-kernel-module-src in RT_OS_LINUX case, :
- patch iptr/types.h to include linux/uidgid.h
- define RTUID/RTGID as kuid_t/kgid_t
- define NIL_RTUID as KUIDT_INIT(0) (a define from uidgid.h)
- check that on variables of type RTUID/RTGID you don't use direct 
arthmetic operations or comparison with int or uint (but I guess it's 
already the case).
- maybe more things

Another (less?) clean fix could be to add a .val in SUPDrv-linux.c lines 
226,235,244 (and maybe somewhere else too) when the kernel was build 

In your case, I guess you don't want to patch virtualbox source code, 
you could just disable CONFIG_UIDGID_STRICT_TYPE_CHECKS (and, 
unfortunately, everything depending on it), it will resolve your issue.



More information about the vbox-dev mailing list