• Josh Triplett's avatar
    turbostat: Don't put unprocessed uapi headers in the include path · b731f311
    Josh Triplett authored
    turbostat's Makefile puts arch/x86/include/uapi/ in the include path, so
    that it can include <asm/msr.h> from it.  It isn't in general safe to
    include even uapi headers directly from the kernel tree without
    processing them through scripts/headers_install.sh, but asm/msr.h
    happens to work.
    
    However, that include path can break with some versions of system
    headers, by overriding some system headers with the unprocessed versions
    directly from the kernel source.  For instance:
    
    In file included from /build/x86-generic/usr/include/bits/sigcontext.h:28:0,
                     from /build/x86-generic/usr/include/signal.h:339,
                     from /build/x86-generic/usr/include/sys/wait.h:31,
                     from turbostat.c:27:
    ../../../../arch/x86/include/uapi/asm/sigcontext.h:4:28: fatal error: linux/compiler.h: No such file or directory
    
    This occurs because the system bits/sigcontext.h on that build system
    includes <asm/sigcontext.h>, and asm/sigcontext.h in the kernel source
    includes <linux/compiler.h>, which scripts/headers_install.sh would have
    filtered out.
    
    Since turbostat really only wants a single header, just include that one
    header rather than putting an entire directory of kernel headers on the
    include path.
    
    In the process, switch from msr.h to msr-index.h, since turbostat just
    wants the MSR numbers.
    Signed-off-by: default avatarJosh Triplett <josh@joshtriplett.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarLen Brown <len.brown@intel.com>
    b731f311
turbostat.c 58.9 KB