Re: [GIT PULL -tip v3] fix 39 'make headers_check' warnings

From: Sam Ravnborg
Date: Mon Jan 19 2009 - 06:00:29 EST


>
> It does. This patch will break userspace.
>
> Doesn't 'make headers_install' unifder the CONFIG_ stuff?

Nope. headers_install only unifdef __KERNEL__ stuff.

>
> >>@@ -384,18 +386,24 @@ struct kvm_trace_rec {
> >> #define KVM_CAP_MP_STATE 14
> >> #define KVM_CAP_COALESCED_MMIO 15
> >> #define KVM_CAP_SYNC_MMU 16 /* Changes to host mmap are reflected in
> >> guest */
> >>+#ifdef __KERNEL__
> >> #if defined(CONFIG_X86)||defined(CONFIG_IA64)
> >> #define KVM_CAP_DEVICE_ASSIGNMENT 17
> >> #endif
> >>+#endif /* __KERNEL__ */
> >> #define KVM_CAP_IOMMU 18
> >>+#ifdef __KERNEL__
> >> #if defined(CONFIG_X86)
> >> #define KVM_CAP_DEVICE_MSI 20
> >> #endif
> >>+#endif /* __KERNEL__ */
> >> /* Bug in KVM_SET_USER_MEMORY_REGION fixed: */
> >> #define KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21
> >>+#ifdef __KERNEL__
> >> #if defined(CONFIG_X86)
> >> #define KVM_CAP_USER_NMI 22
> >> #endif
> >>+#endif /* __KERNEL__ */
> >>
> >
> >likewise, are these bits really used by user-space KVM bits? If not then
> >the whole thing could go into an #ifdef __KERNEL__ block.
> >
>
> They are. This bits advertise to userspace what features kvm supports,
> both compile- and run-time.

This is wrong...
The headers does not change with the kernel configuration and advertising the
kvm features via a .h file like this is simply plain broken.
You cannot assume that the header files are generated with the exact same config
as used by the running kernel.
And userspace has in no way access to the CONFIG_ namespace which is purely kernel-internal.

I cannot see how you have ever seen kcm advertise that for example KVM_CAP_USER_NMI
equals to 22 because CONFIG_X86 is never (supposed to be) defined in userspace -
except if you did so yourself by some means.

Sam
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/