]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 Mar 2020 13:07:02 +0000 (14:07 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 Mar 2020 13:07:02 +0000 (14:07 +0100)
added patches:
kbuild-make-single-target-builds-even-faster.patch
kbuild-move-headers_check-rule-to-usr-include-makefile.patch
kbuild-remove-header-compile-test.patch
kbuild-remove-unneeded-variable-single-all.patch
kvm-check-for-a-bad-hva-before-dropping-into-the-ghc-slow-path.patch
kvm-svm-override-default-mmio-mask-if-memory-encryption-is-enabled.patch
mwifiex-delete-unused-mwifiex_get_intf_num.patch
mwifiex-drop-most-magic-numbers-from-mwifiex_process_tdls_action_frame.patch
namei-only-return-echild-from-follow_dotdot_rcu.patch
sched-fair-optimize-select_idle_cpu.patch

queue-5.4/kbuild-make-single-target-builds-even-faster.patch [new file with mode: 0644]
queue-5.4/kbuild-move-headers_check-rule-to-usr-include-makefile.patch [new file with mode: 0644]
queue-5.4/kbuild-remove-header-compile-test.patch [new file with mode: 0644]
queue-5.4/kbuild-remove-unneeded-variable-single-all.patch [new file with mode: 0644]
queue-5.4/kvm-check-for-a-bad-hva-before-dropping-into-the-ghc-slow-path.patch [new file with mode: 0644]
queue-5.4/kvm-svm-override-default-mmio-mask-if-memory-encryption-is-enabled.patch [new file with mode: 0644]
queue-5.4/mwifiex-delete-unused-mwifiex_get_intf_num.patch [new file with mode: 0644]
queue-5.4/mwifiex-drop-most-magic-numbers-from-mwifiex_process_tdls_action_frame.patch [new file with mode: 0644]
queue-5.4/namei-only-return-echild-from-follow_dotdot_rcu.patch [new file with mode: 0644]
queue-5.4/sched-fair-optimize-select_idle_cpu.patch [new file with mode: 0644]
queue-5.4/series

diff --git a/queue-5.4/kbuild-make-single-target-builds-even-faster.patch b/queue-5.4/kbuild-make-single-target-builds-even-faster.patch
new file mode 100644 (file)
index 0000000..3043c7c
--- /dev/null
@@ -0,0 +1,138 @@
+From b1fbfcb4a20949df08dd995927cdc5ad220c128d Mon Sep 17 00:00:00 2001
+From: Masahiro Yamada <yamada.masahiro@socionext.com>
+Date: Mon, 18 Nov 2019 13:52:47 +0900
+Subject: kbuild: make single target builds even faster
+
+From: Masahiro Yamada <yamada.masahiro@socionext.com>
+
+commit b1fbfcb4a20949df08dd995927cdc5ad220c128d upstream.
+
+Commit 2dffd23f81a3 ("kbuild: make single target builds much faster")
+made the situation much better.
+
+To improve it even more, apply the similar idea to the top Makefile.
+Trim unrelated directories from build-dirs.
+
+The single build code must be moved above the 'descend' target.
+
+Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
+Tested-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Makefile |   90 ++++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 47 insertions(+), 43 deletions(-)
+
+--- a/Makefile
++++ b/Makefile
+@@ -1635,6 +1635,50 @@ help:
+ PHONY += prepare
+ endif # KBUILD_EXTMOD
++# Single targets
++# ---------------------------------------------------------------------------
++# To build individual files in subdirectories, you can do like this:
++#
++#   make foo/bar/baz.s
++#
++# The supported suffixes for single-target are listed in 'single-targets'
++#
++# To build only under specific subdirectories, you can do like this:
++#
++#   make foo/bar/baz/
++
++ifdef single-build
++
++# .ko is special because modpost is needed
++single-ko := $(sort $(filter %.ko, $(MAKECMDGOALS)))
++single-no-ko := $(sort $(patsubst %.ko,%.mod, $(MAKECMDGOALS)))
++
++$(single-ko): single_modpost
++      @:
++$(single-no-ko): descend
++      @:
++
++ifeq ($(KBUILD_EXTMOD),)
++# For the single build of in-tree modules, use a temporary file to avoid
++# the situation of modules_install installing an invalid modules.order.
++MODORDER := .modules.tmp
++endif
++
++PHONY += single_modpost
++single_modpost: $(single-no-ko)
++      $(Q){ $(foreach m, $(single-ko), echo $(extmod-prefix)$m;) } > $(MODORDER)
++      $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
++
++KBUILD_MODULES := 1
++
++export KBUILD_SINGLE_TARGETS := $(addprefix $(extmod-prefix), $(single-no-ko))
++
++# trim unrelated directories
++build-dirs := $(foreach d, $(build-dirs), \
++                      $(if $(filter $(d)/%, $(KBUILD_SINGLE_TARGETS)), $(d)))
++
++endif
++
+ # Handle descending into subdirectories listed in $(build-dirs)
+ # Preset locale variables to speed up the build process. Limit locale
+ # tweaks to this spot to avoid wrong language settings when running
+@@ -1643,7 +1687,9 @@ endif # KBUILD_EXTMOD
+ PHONY += descend $(build-dirs)
+ descend: $(build-dirs)
+ $(build-dirs): prepare
+-      $(Q)$(MAKE) $(build)=$@ single-build=$(single-build) need-builtin=1 need-modorder=1
++      $(Q)$(MAKE) $(build)=$@ \
++      single-build=$(if $(filter-out $@/, $(single-no-ko)),1) \
++      need-builtin=1 need-modorder=1
+ clean-dirs := $(addprefix _clean_, $(clean-dirs))
+ PHONY += $(clean-dirs) clean
+@@ -1747,48 +1793,6 @@ tools/%: FORCE
+       $(Q)mkdir -p $(objtree)/tools
+       $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $*
+-# Single targets
+-# ---------------------------------------------------------------------------
+-# To build individual files in subdirectories, you can do like this:
+-#
+-#   make foo/bar/baz.s
+-#
+-# The supported suffixes for single-target are listed in 'single-targets'
+-#
+-# To build only under specific subdirectories, you can do like this:
+-#
+-#   make foo/bar/baz/
+-
+-ifdef single-build
+-
+-# .ko is special because modpost is needed
+-single-ko := $(sort $(filter %.ko, $(MAKECMDGOALS)))
+-single-no-ko := $(sort $(patsubst %.ko,%.mod, $(MAKECMDGOALS)))
+-
+-$(single-ko): single_modpost
+-      @:
+-$(single-no-ko): descend
+-      @:
+-
+-ifeq ($(KBUILD_EXTMOD),)
+-# For the single build of in-tree modules, use a temporary file to avoid
+-# the situation of modules_install installing an invalid modules.order.
+-MODORDER := .modules.tmp
+-endif
+-
+-PHONY += single_modpost
+-single_modpost: $(single-no-ko)
+-      $(Q){ $(foreach m, $(single-ko), echo $(extmod-prefix)$m;) } > $(MODORDER)
+-      $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
+-
+-KBUILD_MODULES := 1
+-
+-export KBUILD_SINGLE_TARGETS := $(addprefix $(extmod-prefix), $(single-no-ko))
+-
+-single-build = $(if $(filter-out $@/, $(single-no-ko)),1)
+-
+-endif
+-
+ # FIXME Should go into a make.lib or something
+ # ===========================================================================
diff --git a/queue-5.4/kbuild-move-headers_check-rule-to-usr-include-makefile.patch b/queue-5.4/kbuild-move-headers_check-rule-to-usr-include-makefile.patch
new file mode 100644 (file)
index 0000000..58352cd
--- /dev/null
@@ -0,0 +1,135 @@
+From 7ecaf069da52e472d393f03e79d721aabd724166 Mon Sep 17 00:00:00 2001
+From: Masahiro Yamada <yamada.masahiro@socionext.com>
+Date: Thu, 7 Nov 2019 16:14:41 +0900
+Subject: kbuild: move headers_check rule to usr/include/Makefile
+
+From: Masahiro Yamada <yamada.masahiro@socionext.com>
+
+commit 7ecaf069da52e472d393f03e79d721aabd724166 upstream.
+
+Currently, some sanity checks for uapi headers are done by
+scripts/headers_check.pl, which is wired up to the 'headers_check'
+target in the top Makefile.
+
+It is true compiling headers has better test coverage, but there
+are still several headers excluded from the compile test. I like
+to keep headers_check.pl for a while, but we can delete a lot of
+code by moving the build rule to usr/include/Makefile.
+
+Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Makefile                     |   11 +++--------
+ lib/Kconfig.debug            |   11 -----------
+ scripts/Makefile.headersinst |   18 ------------------
+ usr/include/Makefile         |    9 ++++++---
+ 4 files changed, 9 insertions(+), 40 deletions(-)
+
+--- a/Makefile
++++ b/Makefile
+@@ -1195,19 +1195,15 @@ headers: $(version_h) scripts_unifdef ua
+       $(Q)$(MAKE) $(hdr-inst)=include/uapi
+       $(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi
++# Deprecated. It is no-op now.
+ PHONY += headers_check
+-headers_check: headers
+-      $(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1
+-      $(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi HDRCHECK=1
++headers_check:
++      @:
+ ifdef CONFIG_HEADERS_INSTALL
+ prepare: headers
+ endif
+-ifdef CONFIG_HEADERS_CHECK
+-all: headers_check
+-endif
+-
+ PHONY += scripts_unifdef
+ scripts_unifdef: scripts_basic
+       $(Q)$(MAKE) $(build)=scripts scripts/unifdef
+@@ -1475,7 +1471,6 @@ help:
+       @echo  '  versioncheck    - Sanity check on version.h usage'
+       @echo  '  includecheck    - Check for duplicate included header files'
+       @echo  '  export_report   - List the usages of all exported symbols'
+-      @echo  '  headers_check   - Sanity check on exported headers'
+       @echo  '  headerdep       - Detect inclusion cycles in headers'
+       @echo  '  coccicheck      - Check with Coccinelle'
+       @echo  ''
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
+@@ -299,17 +299,6 @@ config HEADERS_INSTALL
+         user-space program samples. It is also needed by some features such
+         as uapi header sanity checks.
+-config HEADERS_CHECK
+-      bool "Run sanity checks on uapi headers when building 'all'"
+-      depends on HEADERS_INSTALL
+-      help
+-        This option will run basic sanity checks on uapi headers when
+-        building the 'all' target, for example, ensure that they do not
+-        attempt to include files which were not exported, etc.
+-
+-        If you're making modifications to header files which are
+-        relevant for userspace, say 'Y'.
+-
+ config OPTIMIZE_INLINING
+       def_bool y
+       help
+--- a/scripts/Makefile.headersinst
++++ b/scripts/Makefile.headersinst
+@@ -56,9 +56,6 @@ new-dirs      := $(filter-out $(existing
+ $(if $(new-dirs), $(shell mkdir -p $(new-dirs)))
+ # Rules
+-
+-ifndef HDRCHECK
+-
+ quiet_cmd_install = HDRINST $@
+       cmd_install = $(CONFIG_SHELL) $(srctree)/scripts/headers_install.sh $< $@
+@@ -81,21 +78,6 @@ existing-headers := $(filter $(old-heade
+ -include $(foreach f,$(existing-headers),$(dir $(f)).$(notdir $(f)).cmd)
+-else
+-
+-quiet_cmd_check = HDRCHK  $<
+-      cmd_check = $(PERL) $(srctree)/scripts/headers_check.pl $(dst) $(SRCARCH) $<; touch $@
+-
+-check-files := $(addsuffix .chk, $(all-headers))
+-
+-$(check-files): $(dst)/%.chk : $(dst)/% $(srctree)/scripts/headers_check.pl
+-      $(call cmd,check)
+-
+-__headers: $(check-files)
+-      @:
+-
+-endif
+-
+ PHONY += FORCE
+ FORCE:
+--- a/usr/include/Makefile
++++ b/usr/include/Makefile
+@@ -99,11 +99,14 @@ endif
+ # asm-generic/*.h is used by asm/*.h, and should not be included directly
+ header-test- += asm-generic/%
+-extra-y := $(patsubst %.h,%.hdrtest, $(filter-out $(header-test-), \
+-              $(patsubst $(obj)/%,%, $(shell find $(obj) -name '*.h'))))
++extra-y := $(patsubst $(obj)/%.h,%.hdrtest, $(shell find $(obj) -name '*.h'))
+ quiet_cmd_hdrtest = HDRTEST $<
+-      cmd_hdrtest = $(CC) $(c_flags) -S -o /dev/null -x c /dev/null -include $<; touch $@
++      cmd_hdrtest = \
++              $(CC) $(c_flags) -S -o /dev/null -x c /dev/null \
++                      $(if $(filter-out $(header-test-), $*.h), -include $<); \
++              $(PERL) $(srctree)/scripts/headers_check.pl $(obj) $(SRCARCH) $<; \
++              touch $@
+ $(obj)/%.hdrtest: $(obj)/%.h FORCE
+       $(call if_changed_dep,hdrtest)
diff --git a/queue-5.4/kbuild-remove-header-compile-test.patch b/queue-5.4/kbuild-remove-header-compile-test.patch
new file mode 100644 (file)
index 0000000..c9a4e63
--- /dev/null
@@ -0,0 +1,1365 @@
+From fcbb8461fd2376ba3782b5b8bd440c929b8e4980 Mon Sep 17 00:00:00 2001
+From: Masahiro Yamada <yamada.masahiro@socionext.com>
+Date: Thu, 7 Nov 2019 16:14:40 +0900
+Subject: kbuild: remove header compile test
+
+From: Masahiro Yamada <yamada.masahiro@socionext.com>
+
+commit fcbb8461fd2376ba3782b5b8bd440c929b8e4980 upstream.
+
+There are both positive and negative options about this feature.
+At first, I thought it was a good idea, but actually Linus stated a
+negative opinion (https://lkml.org/lkml/2019/9/29/227). I admit it
+is ugly and annoying.
+
+The baseline I'd like to keep is the compile-test of uapi headers.
+(Otherwise, kernel developers have no way to ensure the correctness
+of the exported headers.)
+
+I will maintain a small build rule in usr/include/Makefile.
+Remove the other header test functionality.
+
+Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
+[ added to 5.4.y due to start of build warnings from backported patches
+  because of this feature - gregkh]
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Documentation/kbuild/makefiles.rst |   17 
+ Makefile                           |    1 
+ drivers/gpu/drm/i915/Kconfig.debug |    1 
+ include/Kbuild                     | 1185 -------------------------------------
+ init/Kconfig                       |   22 
+ scripts/Makefile.build             |    9 
+ scripts/Makefile.lib               |   14 
+ usr/include/Makefile               |   12 
+ 8 files changed, 9 insertions(+), 1252 deletions(-)
+
+--- a/Documentation/kbuild/makefiles.rst
++++ b/Documentation/kbuild/makefiles.rst
+@@ -1115,23 +1115,6 @@ When kbuild executes, the following step
+       In this example, extra-y is used to list object files that
+       shall be built, but shall not be linked as part of built-in.a.
+-    header-test-y
+-
+-      header-test-y specifies headers (`*.h`) in the current directory that
+-      should be compile tested to ensure they are self-contained,
+-      i.e. compilable as standalone units. If CONFIG_HEADER_TEST is enabled,
+-      this builds them as part of extra-y.
+-
+-    header-test-pattern-y
+-
+-      This works as a weaker version of header-test-y, and accepts wildcard
+-      patterns. The typical usage is::
+-
+-              header-test-pattern-y += *.h
+-
+-      This specifies all the files that matches to `*.h` in the current
+-      directory, but the files in 'header-test-' are excluded.
+-
+ 6.7 Commands useful for building a boot image
+ ---------------------------------------------
+--- a/Makefile
++++ b/Makefile
+@@ -618,7 +618,6 @@ ifeq ($(KBUILD_EXTMOD),)
+ init-y                := init/
+ drivers-y     := drivers/ sound/
+ drivers-$(CONFIG_SAMPLES) += samples/
+-drivers-$(CONFIG_KERNEL_HEADER_TEST) += include/
+ net-y         := net/
+ libs-y                := lib/
+ core-y                := usr/
+--- a/drivers/gpu/drm/i915/Kconfig.debug
++++ b/drivers/gpu/drm/i915/Kconfig.debug
+@@ -7,7 +7,6 @@ config DRM_I915_WERROR
+         # We use the dependency on !COMPILE_TEST to not be enabled in
+         # allmodconfig or allyesconfig configurations
+         depends on !COMPILE_TEST
+-      select HEADER_TEST
+         default n
+         help
+           Add -Werror to the build flags for (and only for) i915.ko.
+--- a/include/Kbuild
++++ /dev/null
+@@ -1,1185 +0,0 @@
+-# SPDX-License-Identifier: GPL-2.0-only
+-
+-# Add header-test-$(CONFIG_...) guard to headers that are only compiled
+-# for particular architectures.
+-#
+-# Headers listed in header-test- are excluded from the test coverage.
+-# Many headers are excluded for now because they fail to build. Please
+-# consider to fix headers first before adding new ones to the blacklist.
+-#
+-# Sorted alphabetically.
+-header-test-                  += acpi/acbuffer.h
+-header-test-                  += acpi/acpi.h
+-header-test-                  += acpi/acpi_bus.h
+-header-test-                  += acpi/acpi_drivers.h
+-header-test-                  += acpi/acpi_io.h
+-header-test-                  += acpi/acpi_lpat.h
+-header-test-                  += acpi/acpiosxf.h
+-header-test-                  += acpi/acpixf.h
+-header-test-                  += acpi/acrestyp.h
+-header-test-                  += acpi/actbl.h
+-header-test-                  += acpi/actbl1.h
+-header-test-                  += acpi/actbl2.h
+-header-test-                  += acpi/actbl3.h
+-header-test-                  += acpi/actypes.h
+-header-test-                  += acpi/battery.h
+-header-test-                  += acpi/cppc_acpi.h
+-header-test-                  += acpi/nfit.h
+-header-test-                  += acpi/platform/acenv.h
+-header-test-                  += acpi/platform/acenvex.h
+-header-test-                  += acpi/platform/acintel.h
+-header-test-                  += acpi/platform/aclinux.h
+-header-test-                  += acpi/platform/aclinuxex.h
+-header-test-                  += acpi/processor.h
+-header-test-$(CONFIG_X86)     += clocksource/hyperv_timer.h
+-header-test-                  += clocksource/timer-sp804.h
+-header-test-                  += crypto/cast_common.h
+-header-test-                  += crypto/internal/cryptouser.h
+-header-test-                  += crypto/pkcs7.h
+-header-test-                  += crypto/poly1305.h
+-header-test-                  += crypto/sha3.h
+-header-test-                  += drm/ati_pcigart.h
+-header-test-                  += drm/bridge/dw_hdmi.h
+-header-test-                  += drm/bridge/dw_mipi_dsi.h
+-header-test-                  += drm/drm_audio_component.h
+-header-test-                  += drm/drm_auth.h
+-header-test-                  += drm/drm_debugfs.h
+-header-test-                  += drm/drm_debugfs_crc.h
+-header-test-                  += drm/drm_displayid.h
+-header-test-                  += drm/drm_encoder_slave.h
+-header-test-                  += drm/drm_fb_cma_helper.h
+-header-test-                  += drm/drm_fb_helper.h
+-header-test-                  += drm/drm_fixed.h
+-header-test-                  += drm/drm_format_helper.h
+-header-test-                  += drm/drm_lease.h
+-header-test-                  += drm/drm_legacy.h
+-header-test-                  += drm/drm_panel.h
+-header-test-                  += drm/drm_plane_helper.h
+-header-test-                  += drm/drm_rect.h
+-header-test-                  += drm/i915_component.h
+-header-test-                  += drm/intel-gtt.h
+-header-test-                  += drm/tinydrm/tinydrm-helpers.h
+-header-test-                  += drm/ttm/ttm_debug.h
+-header-test-                  += keys/asymmetric-parser.h
+-header-test-                  += keys/asymmetric-subtype.h
+-header-test-                  += keys/asymmetric-type.h
+-header-test-                  += keys/big_key-type.h
+-header-test-                  += keys/request_key_auth-type.h
+-header-test-                  += keys/trusted.h
+-header-test-                  += kvm/arm_arch_timer.h
+-header-test-                  += kvm/arm_pmu.h
+-header-test-$(CONFIG_ARM)     += kvm/arm_psci.h
+-header-test-$(CONFIG_ARM64)   += kvm/arm_psci.h
+-header-test-                  += kvm/arm_vgic.h
+-header-test-                  += linux/8250_pci.h
+-header-test-                  += linux/a.out.h
+-header-test-                  += linux/adxl.h
+-header-test-                  += linux/agpgart.h
+-header-test-                  += linux/alcor_pci.h
+-header-test-                  += linux/amba/clcd.h
+-header-test-                  += linux/amba/pl080.h
+-header-test-                  += linux/amd-iommu.h
+-header-test-$(CONFIG_ARM)     += linux/arm-cci.h
+-header-test-$(CONFIG_ARM64)   += linux/arm-cci.h
+-header-test-                  += linux/arm_sdei.h
+-header-test-                  += linux/asn1_decoder.h
+-header-test-                  += linux/ata_platform.h
+-header-test-                  += linux/ath9k_platform.h
+-header-test-                  += linux/atm_tcp.h
+-header-test-                  += linux/atomic-fallback.h
+-header-test-                  += linux/avf/virtchnl.h
+-header-test-                  += linux/bcm47xx_sprom.h
+-header-test-                  += linux/bcma/bcma_driver_gmac_cmn.h
+-header-test-                  += linux/bcma/bcma_driver_mips.h
+-header-test-                  += linux/bcma/bcma_driver_pci.h
+-header-test-                  += linux/bcma/bcma_driver_pcie2.h
+-header-test-                  += linux/bit_spinlock.h
+-header-test-                  += linux/blk-mq-rdma.h
+-header-test-                  += linux/blk-mq.h
+-header-test-                  += linux/blktrace_api.h
+-header-test-                  += linux/blockgroup_lock.h
+-header-test-                  += linux/bma150.h
+-header-test-                  += linux/bpf_lirc.h
+-header-test-                  += linux/bpf_types.h
+-header-test-                  += linux/bsg-lib.h
+-header-test-                  += linux/bsg.h
+-header-test-                  += linux/btf.h
+-header-test-                  += linux/btree-128.h
+-header-test-                  += linux/btree-type.h
+-header-test-$(CONFIG_CPU_BIG_ENDIAN) += linux/byteorder/big_endian.h
+-header-test-                  += linux/byteorder/generic.h
+-header-test-$(CONFIG_CPU_LITTLE_ENDIAN) += linux/byteorder/little_endian.h
+-header-test-                  += linux/c2port.h
+-header-test-                  += linux/can/dev/peak_canfd.h
+-header-test-                  += linux/can/platform/cc770.h
+-header-test-                  += linux/can/platform/sja1000.h
+-header-test-                  += linux/ceph/ceph_features.h
+-header-test-                  += linux/ceph/ceph_frag.h
+-header-test-                  += linux/ceph/ceph_fs.h
+-header-test-                  += linux/ceph/debugfs.h
+-header-test-                  += linux/ceph/msgr.h
+-header-test-                  += linux/ceph/rados.h
+-header-test-                  += linux/cgroup_subsys.h
+-header-test-                  += linux/clk/sunxi-ng.h
+-header-test-                  += linux/clk/ti.h
+-header-test-                  += linux/cn_proc.h
+-header-test-                  += linux/coda_psdev.h
+-header-test-                  += linux/compaction.h
+-header-test-                  += linux/console_struct.h
+-header-test-                  += linux/count_zeros.h
+-header-test-                  += linux/cs5535.h
+-header-test-                  += linux/cuda.h
+-header-test-                  += linux/cyclades.h
+-header-test-                  += linux/dcookies.h
+-header-test-                  += linux/delayacct.h
+-header-test-                  += linux/delayed_call.h
+-header-test-                  += linux/device-mapper.h
+-header-test-                  += linux/devpts_fs.h
+-header-test-                  += linux/dio.h
+-header-test-                  += linux/dirent.h
+-header-test-                  += linux/dlm_plock.h
+-header-test-                  += linux/dm-dirty-log.h
+-header-test-                  += linux/dm-region-hash.h
+-header-test-                  += linux/dma-debug.h
+-header-test-                  += linux/dma/mmp-pdma.h
+-header-test-                  += linux/dma/sprd-dma.h
+-header-test-                  += linux/dns_resolver.h
+-header-test-                  += linux/drbd_genl.h
+-header-test-                  += linux/drbd_genl_api.h
+-header-test-                  += linux/dw_apb_timer.h
+-header-test-                  += linux/dynamic_debug.h
+-header-test-                  += linux/dynamic_queue_limits.h
+-header-test-                  += linux/ecryptfs.h
+-header-test-                  += linux/edma.h
+-header-test-                  += linux/eeprom_93cx6.h
+-header-test-                  += linux/efs_vh.h
+-header-test-                  += linux/elevator.h
+-header-test-                  += linux/elfcore-compat.h
+-header-test-                  += linux/error-injection.h
+-header-test-                  += linux/errseq.h
+-header-test-                  += linux/eventpoll.h
+-header-test-                  += linux/ext2_fs.h
+-header-test-                  += linux/f75375s.h
+-header-test-                  += linux/falloc.h
+-header-test-                  += linux/fault-inject.h
+-header-test-                  += linux/fbcon.h
+-header-test-                  += linux/firmware/intel/stratix10-svc-client.h
+-header-test-                  += linux/firmware/meson/meson_sm.h
+-header-test-                  += linux/firmware/trusted_foundations.h
+-header-test-                  += linux/firmware/xlnx-zynqmp.h
+-header-test-                  += linux/fixp-arith.h
+-header-test-                  += linux/flat.h
+-header-test-                  += linux/fs_types.h
+-header-test-                  += linux/fs_uart_pd.h
+-header-test-                  += linux/fsi-occ.h
+-header-test-                  += linux/fsi-sbefifo.h
+-header-test-                  += linux/fsl/bestcomm/ata.h
+-header-test-                  += linux/fsl/bestcomm/bestcomm.h
+-header-test-                  += linux/fsl/bestcomm/bestcomm_priv.h
+-header-test-                  += linux/fsl/bestcomm/fec.h
+-header-test-                  += linux/fsl/bestcomm/gen_bd.h
+-header-test-                  += linux/fsl/bestcomm/sram.h
+-header-test-                  += linux/fsl_hypervisor.h
+-header-test-                  += linux/fsldma.h
+-header-test-                  += linux/ftrace_irq.h
+-header-test-                  += linux/gameport.h
+-header-test-                  += linux/genl_magic_func.h
+-header-test-                  += linux/genl_magic_struct.h
+-header-test-                  += linux/gpio/aspeed.h
+-header-test-                  += linux/gpio/gpio-reg.h
+-header-test-                  += linux/hid-debug.h
+-header-test-                  += linux/hiddev.h
+-header-test-                  += linux/hippidevice.h
+-header-test-                  += linux/hmm.h
+-header-test-                  += linux/hp_sdc.h
+-header-test-                  += linux/huge_mm.h
+-header-test-                  += linux/hugetlb_cgroup.h
+-header-test-                  += linux/hugetlb_inline.h
+-header-test-                  += linux/hwmon-vid.h
+-header-test-                  += linux/hyperv.h
+-header-test-                  += linux/i2c-algo-pca.h
+-header-test-                  += linux/i2c-algo-pcf.h
+-header-test-                  += linux/i3c/ccc.h
+-header-test-                  += linux/i3c/device.h
+-header-test-                  += linux/i3c/master.h
+-header-test-                  += linux/i8042.h
+-header-test-                  += linux/ide.h
+-header-test-                  += linux/idle_inject.h
+-header-test-                  += linux/if_frad.h
+-header-test-                  += linux/if_rmnet.h
+-header-test-                  += linux/if_tap.h
+-header-test-                  += linux/iio/accel/kxcjk_1013.h
+-header-test-                  += linux/iio/adc/ad_sigma_delta.h
+-header-test-                  += linux/iio/buffer-dma.h
+-header-test-                  += linux/iio/buffer_impl.h
+-header-test-                  += linux/iio/common/st_sensors.h
+-header-test-                  += linux/iio/common/st_sensors_i2c.h
+-header-test-                  += linux/iio/common/st_sensors_spi.h
+-header-test-                  += linux/iio/dac/ad5421.h
+-header-test-                  += linux/iio/dac/ad5504.h
+-header-test-                  += linux/iio/dac/ad5791.h
+-header-test-                  += linux/iio/dac/max517.h
+-header-test-                  += linux/iio/dac/mcp4725.h
+-header-test-                  += linux/iio/frequency/ad9523.h
+-header-test-                  += linux/iio/frequency/adf4350.h
+-header-test-                  += linux/iio/hw-consumer.h
+-header-test-                  += linux/iio/imu/adis.h
+-header-test-                  += linux/iio/sysfs.h
+-header-test-                  += linux/iio/timer/stm32-timer-trigger.h
+-header-test-                  += linux/iio/trigger.h
+-header-test-                  += linux/iio/triggered_event.h
+-header-test-                  += linux/imx-media.h
+-header-test-                  += linux/inet_diag.h
+-header-test-                  += linux/init_ohci1394_dma.h
+-header-test-                  += linux/initrd.h
+-header-test-                  += linux/input/adp5589.h
+-header-test-                  += linux/input/bu21013.h
+-header-test-                  += linux/input/cma3000.h
+-header-test-                  += linux/input/kxtj9.h
+-header-test-                  += linux/input/lm8333.h
+-header-test-                  += linux/input/sparse-keymap.h
+-header-test-                  += linux/input/touchscreen.h
+-header-test-                  += linux/input/tps6507x-ts.h
+-header-test-$(CONFIG_X86)     += linux/intel-iommu.h
+-header-test-                  += linux/intel-ish-client-if.h
+-header-test-                  += linux/intel-pti.h
+-header-test-                  += linux/intel-svm.h
+-header-test-                  += linux/interconnect-provider.h
+-header-test-                  += linux/ioc3.h
+-header-test-$(CONFIG_BLOCK)   += linux/iomap.h
+-header-test-                  += linux/ipack.h
+-header-test-                  += linux/irq_cpustat.h
+-header-test-                  += linux/irq_poll.h
+-header-test-                  += linux/irqchip/arm-gic-v3.h
+-header-test-                  += linux/irqchip/arm-gic-v4.h
+-header-test-                  += linux/irqchip/irq-madera.h
+-header-test-                  += linux/irqchip/irq-sa11x0.h
+-header-test-                  += linux/irqchip/mxs.h
+-header-test-                  += linux/irqchip/versatile-fpga.h
+-header-test-                  += linux/irqdesc.h
+-header-test-                  += linux/irqflags.h
+-header-test-                  += linux/iscsi_boot_sysfs.h
+-header-test-                  += linux/isdn/capiutil.h
+-header-test-                  += linux/isdn/hdlc.h
+-header-test-                  += linux/isdn_ppp.h
+-header-test-                  += linux/jbd2.h
+-header-test-                  += linux/jump_label.h
+-header-test-                  += linux/jump_label_ratelimit.h
+-header-test-                  += linux/jz4740-adc.h
+-header-test-                  += linux/kasan.h
+-header-test-                  += linux/kcore.h
+-header-test-                  += linux/kdev_t.h
+-header-test-                  += linux/kernelcapi.h
+-header-test-                  += linux/khugepaged.h
+-header-test-                  += linux/kobj_map.h
+-header-test-                  += linux/kobject_ns.h
+-header-test-                  += linux/kvm_host.h
+-header-test-                  += linux/kvm_irqfd.h
+-header-test-                  += linux/kvm_para.h
+-header-test-                  += linux/lantiq.h
+-header-test-                  += linux/lapb.h
+-header-test-                  += linux/latencytop.h
+-header-test-                  += linux/led-lm3530.h
+-header-test-                  += linux/leds-bd2802.h
+-header-test-                  += linux/leds-lp3944.h
+-header-test-                  += linux/leds-lp3952.h
+-header-test-                  += linux/leds_pwm.h
+-header-test-                  += linux/libata.h
+-header-test-                  += linux/license.h
+-header-test-                  += linux/lightnvm.h
+-header-test-                  += linux/lis3lv02d.h
+-header-test-                  += linux/list_bl.h
+-header-test-                  += linux/list_lru.h
+-header-test-                  += linux/list_nulls.h
+-header-test-                  += linux/lockd/share.h
+-header-test-                  += linux/lzo.h
+-header-test-                  += linux/mailbox/zynqmp-ipi-message.h
+-header-test-                  += linux/maple.h
+-header-test-                  += linux/mbcache.h
+-header-test-                  += linux/mbus.h
+-header-test-                  += linux/mc146818rtc.h
+-header-test-                  += linux/mc6821.h
+-header-test-                  += linux/mdev.h
+-header-test-                  += linux/mem_encrypt.h
+-header-test-                  += linux/memfd.h
+-header-test-                  += linux/mfd/88pm80x.h
+-header-test-                  += linux/mfd/88pm860x.h
+-header-test-                  += linux/mfd/abx500/ab8500-bm.h
+-header-test-                  += linux/mfd/abx500/ab8500-gpadc.h
+-header-test-                  += linux/mfd/adp5520.h
+-header-test-                  += linux/mfd/arizona/pdata.h
+-header-test-                  += linux/mfd/as3711.h
+-header-test-                  += linux/mfd/as3722.h
+-header-test-                  += linux/mfd/da903x.h
+-header-test-                  += linux/mfd/da9055/pdata.h
+-header-test-                  += linux/mfd/db8500-prcmu.h
+-header-test-                  += linux/mfd/dbx500-prcmu.h
+-header-test-                  += linux/mfd/dln2.h
+-header-test-                  += linux/mfd/dm355evm_msp.h
+-header-test-                  += linux/mfd/ds1wm.h
+-header-test-                  += linux/mfd/ezx-pcap.h
+-header-test-                  += linux/mfd/intel_msic.h
+-header-test-                  += linux/mfd/janz.h
+-header-test-                  += linux/mfd/kempld.h
+-header-test-                  += linux/mfd/lm3533.h
+-header-test-                  += linux/mfd/lp8788-isink.h
+-header-test-                  += linux/mfd/lpc_ich.h
+-header-test-                  += linux/mfd/max77693.h
+-header-test-                  += linux/mfd/max8998-private.h
+-header-test-                  += linux/mfd/menelaus.h
+-header-test-                  += linux/mfd/mt6397/core.h
+-header-test-                  += linux/mfd/palmas.h
+-header-test-                  += linux/mfd/pcf50633/backlight.h
+-header-test-                  += linux/mfd/rc5t583.h
+-header-test-                  += linux/mfd/retu.h
+-header-test-                  += linux/mfd/samsung/core.h
+-header-test-                  += linux/mfd/si476x-platform.h
+-header-test-                  += linux/mfd/si476x-reports.h
+-header-test-                  += linux/mfd/sky81452.h
+-header-test-                  += linux/mfd/smsc.h
+-header-test-                  += linux/mfd/sta2x11-mfd.h
+-header-test-                  += linux/mfd/stmfx.h
+-header-test-                  += linux/mfd/tc3589x.h
+-header-test-                  += linux/mfd/tc6387xb.h
+-header-test-                  += linux/mfd/tc6393xb.h
+-header-test-                  += linux/mfd/tps65090.h
+-header-test-                  += linux/mfd/tps6586x.h
+-header-test-                  += linux/mfd/tps65910.h
+-header-test-                  += linux/mfd/tps80031.h
+-header-test-                  += linux/mfd/ucb1x00.h
+-header-test-                  += linux/mfd/viperboard.h
+-header-test-                  += linux/mfd/wm831x/core.h
+-header-test-                  += linux/mfd/wm831x/otp.h
+-header-test-                  += linux/mfd/wm831x/pdata.h
+-header-test-                  += linux/mfd/wm8994/core.h
+-header-test-                  += linux/mfd/wm8994/pdata.h
+-header-test-                  += linux/mlx4/doorbell.h
+-header-test-                  += linux/mlx4/srq.h
+-header-test-                  += linux/mlx5/doorbell.h
+-header-test-                  += linux/mlx5/eq.h
+-header-test-                  += linux/mlx5/fs_helpers.h
+-header-test-                  += linux/mlx5/mlx5_ifc.h
+-header-test-                  += linux/mlx5/mlx5_ifc_fpga.h
+-header-test-                  += linux/mm-arch-hooks.h
+-header-test-                  += linux/mm_inline.h
+-header-test-                  += linux/mmu_context.h
+-header-test-                  += linux/mpage.h
+-header-test-                  += linux/mtd/bbm.h
+-header-test-                  += linux/mtd/cfi.h
+-header-test-                  += linux/mtd/doc2000.h
+-header-test-                  += linux/mtd/flashchip.h
+-header-test-                  += linux/mtd/ftl.h
+-header-test-                  += linux/mtd/gen_probe.h
+-header-test-                  += linux/mtd/jedec.h
+-header-test-                  += linux/mtd/nand_bch.h
+-header-test-                  += linux/mtd/nand_ecc.h
+-header-test-                  += linux/mtd/ndfc.h
+-header-test-                  += linux/mtd/onenand.h
+-header-test-                  += linux/mtd/pismo.h
+-header-test-                  += linux/mtd/plat-ram.h
+-header-test-                  += linux/mtd/spi-nor.h
+-header-test-                  += linux/mv643xx.h
+-header-test-                  += linux/mv643xx_eth.h
+-header-test-                  += linux/mvebu-pmsu.h
+-header-test-                  += linux/mxm-wmi.h
+-header-test-                  += linux/n_r3964.h
+-header-test-                  += linux/ndctl.h
+-header-test-                  += linux/nfs.h
+-header-test-                  += linux/nfs_fs_i.h
+-header-test-                  += linux/nfs_fs_sb.h
+-header-test-                  += linux/nfs_page.h
+-header-test-                  += linux/nfs_xdr.h
+-header-test-                  += linux/nfsacl.h
+-header-test-                  += linux/nl802154.h
+-header-test-                  += linux/ns_common.h
+-header-test-                  += linux/nsc_gpio.h
+-header-test-                  += linux/ntb_transport.h
+-header-test-                  += linux/nubus.h
+-header-test-                  += linux/nvme-fc-driver.h
+-header-test-                  += linux/nvme-fc.h
+-header-test-                  += linux/nvme-rdma.h
+-header-test-                  += linux/nvram.h
+-header-test-                  += linux/objagg.h
+-header-test-                  += linux/of_clk.h
+-header-test-                  += linux/of_net.h
+-header-test-                  += linux/of_pdt.h
+-header-test-                  += linux/olpc-ec.h
+-header-test-                  += linux/omap-dma.h
+-header-test-                  += linux/omap-dmaengine.h
+-header-test-                  += linux/omap-gpmc.h
+-header-test-                  += linux/omap-iommu.h
+-header-test-                  += linux/omap-mailbox.h
+-header-test-                  += linux/once.h
+-header-test-                  += linux/osq_lock.h
+-header-test-                  += linux/overflow.h
+-header-test-                  += linux/page-flags-layout.h
+-header-test-                  += linux/page-isolation.h
+-header-test-                  += linux/page_ext.h
+-header-test-                  += linux/page_owner.h
+-header-test-                  += linux/parport_pc.h
+-header-test-                  += linux/parser.h
+-header-test-                  += linux/pci-acpi.h
+-header-test-                  += linux/pci-dma-compat.h
+-header-test-                  += linux/pci_hotplug.h
+-header-test-                  += linux/pda_power.h
+-header-test-                  += linux/perf/arm_pmu.h
+-header-test-                  += linux/perf_regs.h
+-header-test-                  += linux/phy/omap_control_phy.h
+-header-test-                  += linux/phy/tegra/xusb.h
+-header-test-                  += linux/phy/ulpi_phy.h
+-header-test-                  += linux/phy_fixed.h
+-header-test-                  += linux/pipe_fs_i.h
+-header-test-                  += linux/pktcdvd.h
+-header-test-                  += linux/pl320-ipc.h
+-header-test-                  += linux/pl353-smc.h
+-header-test-                  += linux/platform_data/ad5449.h
+-header-test-                  += linux/platform_data/ad5755.h
+-header-test-                  += linux/platform_data/ad7266.h
+-header-test-                  += linux/platform_data/ad7291.h
+-header-test-                  += linux/platform_data/ad7298.h
+-header-test-                  += linux/platform_data/ad7303.h
+-header-test-                  += linux/platform_data/ad7791.h
+-header-test-                  += linux/platform_data/ad7793.h
+-header-test-                  += linux/platform_data/ad7887.h
+-header-test-                  += linux/platform_data/adau17x1.h
+-header-test-                  += linux/platform_data/adp8870.h
+-header-test-                  += linux/platform_data/ads1015.h
+-header-test-                  += linux/platform_data/ads7828.h
+-header-test-                  += linux/platform_data/apds990x.h
+-header-test-                  += linux/platform_data/arm-ux500-pm.h
+-header-test-                  += linux/platform_data/asoc-s3c.h
+-header-test-                  += linux/platform_data/at91_adc.h
+-header-test-                  += linux/platform_data/ata-pxa.h
+-header-test-                  += linux/platform_data/atmel.h
+-header-test-                  += linux/platform_data/bh1770glc.h
+-header-test-                  += linux/platform_data/brcmfmac.h
+-header-test-                  += linux/platform_data/cros_ec_commands.h
+-header-test-                  += linux/platform_data/clk-u300.h
+-header-test-                  += linux/platform_data/cyttsp4.h
+-header-test-                  += linux/platform_data/dma-coh901318.h
+-header-test-                  += linux/platform_data/dma-imx-sdma.h
+-header-test-                  += linux/platform_data/dma-mcf-edma.h
+-header-test-                  += linux/platform_data/dma-s3c24xx.h
+-header-test-                  += linux/platform_data/dmtimer-omap.h
+-header-test-                  += linux/platform_data/dsa.h
+-header-test-                  += linux/platform_data/edma.h
+-header-test-                  += linux/platform_data/elm.h
+-header-test-                  += linux/platform_data/emif_plat.h
+-header-test-                  += linux/platform_data/fsa9480.h
+-header-test-                  += linux/platform_data/g762.h
+-header-test-                  += linux/platform_data/gpio-ath79.h
+-header-test-                  += linux/platform_data/gpio-davinci.h
+-header-test-                  += linux/platform_data/gpio-dwapb.h
+-header-test-                  += linux/platform_data/gpio-htc-egpio.h
+-header-test-                  += linux/platform_data/gpmc-omap.h
+-header-test-                  += linux/platform_data/hsmmc-omap.h
+-header-test-                  += linux/platform_data/hwmon-s3c.h
+-header-test-                  += linux/platform_data/i2c-davinci.h
+-header-test-                  += linux/platform_data/i2c-imx.h
+-header-test-                  += linux/platform_data/i2c-mux-reg.h
+-header-test-                  += linux/platform_data/i2c-ocores.h
+-header-test-                  += linux/platform_data/i2c-xiic.h
+-header-test-                  += linux/platform_data/intel-spi.h
+-header-test-                  += linux/platform_data/invensense_mpu6050.h
+-header-test-                  += linux/platform_data/irda-pxaficp.h
+-header-test-                  += linux/platform_data/irda-sa11x0.h
+-header-test-                  += linux/platform_data/itco_wdt.h
+-header-test-                  += linux/platform_data/jz4740/jz4740_nand.h
+-header-test-                  += linux/platform_data/keyboard-pxa930_rotary.h
+-header-test-                  += linux/platform_data/keypad-omap.h
+-header-test-                  += linux/platform_data/leds-lp55xx.h
+-header-test-                  += linux/platform_data/leds-omap.h
+-header-test-                  += linux/platform_data/lp855x.h
+-header-test-                  += linux/platform_data/lp8727.h
+-header-test-                  += linux/platform_data/max197.h
+-header-test-                  += linux/platform_data/max3421-hcd.h
+-header-test-                  += linux/platform_data/max732x.h
+-header-test-                  += linux/platform_data/mcs.h
+-header-test-                  += linux/platform_data/mdio-bcm-unimac.h
+-header-test-                  += linux/platform_data/mdio-gpio.h
+-header-test-                  += linux/platform_data/media/si4713.h
+-header-test-                  += linux/platform_data/mlxreg.h
+-header-test-                  += linux/platform_data/mmc-omap.h
+-header-test-                  += linux/platform_data/mmc-sdhci-s3c.h
+-header-test-                  += linux/platform_data/mmp_audio.h
+-header-test-                  += linux/platform_data/mtd-orion_nand.h
+-header-test-                  += linux/platform_data/mv88e6xxx.h
+-header-test-                  += linux/platform_data/net-cw1200.h
+-header-test-                  += linux/platform_data/omap-twl4030.h
+-header-test-                  += linux/platform_data/omapdss.h
+-header-test-                  += linux/platform_data/pcf857x.h
+-header-test-                  += linux/platform_data/pixcir_i2c_ts.h
+-header-test-                  += linux/platform_data/pwm_omap_dmtimer.h
+-header-test-                  += linux/platform_data/pxa2xx_udc.h
+-header-test-                  += linux/platform_data/pxa_sdhci.h
+-header-test-                  += linux/platform_data/remoteproc-omap.h
+-header-test-                  += linux/platform_data/sa11x0-serial.h
+-header-test-                  += linux/platform_data/sc18is602.h
+-header-test-                  += linux/platform_data/sdhci-pic32.h
+-header-test-                  += linux/platform_data/serial-sccnxp.h
+-header-test-                  += linux/platform_data/sht3x.h
+-header-test-                  += linux/platform_data/shtc1.h
+-header-test-                  += linux/platform_data/si5351.h
+-header-test-                  += linux/platform_data/sky81452-backlight.h
+-header-test-                  += linux/platform_data/spi-davinci.h
+-header-test-                  += linux/platform_data/spi-ep93xx.h
+-header-test-                  += linux/platform_data/spi-mt65xx.h
+-header-test-                  += linux/platform_data/st_sensors_pdata.h
+-header-test-                  += linux/platform_data/ti-sysc.h
+-header-test-                  += linux/platform_data/timer-ixp4xx.h
+-header-test-                  += linux/platform_data/touchscreen-s3c2410.h
+-header-test-                  += linux/platform_data/tsc2007.h
+-header-test-                  += linux/platform_data/tsl2772.h
+-header-test-                  += linux/platform_data/uio_pruss.h
+-header-test-                  += linux/platform_data/usb-davinci.h
+-header-test-                  += linux/platform_data/usb-ehci-mxc.h
+-header-test-                  += linux/platform_data/usb-ehci-orion.h
+-header-test-                  += linux/platform_data/usb-mx2.h
+-header-test-                  += linux/platform_data/usb-ohci-s3c2410.h
+-header-test-                  += linux/platform_data/usb-omap.h
+-header-test-                  += linux/platform_data/usb-s3c2410_udc.h
+-header-test-                  += linux/platform_data/usb3503.h
+-header-test-                  += linux/platform_data/ux500_wdt.h
+-header-test-                  += linux/platform_data/video-clcd-versatile.h
+-header-test-                  += linux/platform_data/video-imxfb.h
+-header-test-                  += linux/platform_data/video-pxafb.h
+-header-test-                  += linux/platform_data/video_s3c.h
+-header-test-                  += linux/platform_data/voltage-omap.h
+-header-test-                  += linux/platform_data/x86/apple.h
+-header-test-                  += linux/platform_data/x86/clk-pmc-atom.h
+-header-test-                  += linux/platform_data/x86/pmc_atom.h
+-header-test-                  += linux/platform_data/xtalk-bridge.h
+-header-test-                  += linux/pm2301_charger.h
+-header-test-                  += linux/pm_wakeirq.h
+-header-test-                  += linux/pm_wakeup.h
+-header-test-                  += linux/pmbus.h
+-header-test-                  += linux/pmu.h
+-header-test-                  += linux/posix_acl.h
+-header-test-                  += linux/posix_acl_xattr.h
+-header-test-                  += linux/power/ab8500.h
+-header-test-                  += linux/power/bq27xxx_battery.h
+-header-test-                  += linux/power/generic-adc-battery.h
+-header-test-                  += linux/power/jz4740-battery.h
+-header-test-                  += linux/power/max17042_battery.h
+-header-test-                  += linux/power/max8903_charger.h
+-header-test-                  += linux/ppp-comp.h
+-header-test-                  += linux/pps-gpio.h
+-header-test-                  += linux/pr.h
+-header-test-                  += linux/proc_ns.h
+-header-test-                  += linux/processor.h
+-header-test-                  += linux/psi.h
+-header-test-                  += linux/psp-sev.h
+-header-test-                  += linux/pstore.h
+-header-test-                  += linux/ptr_ring.h
+-header-test-                  += linux/ptrace.h
+-header-test-                  += linux/qcom-geni-se.h
+-header-test-                  += linux/qed/eth_common.h
+-header-test-                  += linux/qed/fcoe_common.h
+-header-test-                  += linux/qed/iscsi_common.h
+-header-test-                  += linux/qed/iwarp_common.h
+-header-test-                  += linux/qed/qed_eth_if.h
+-header-test-                  += linux/qed/qed_fcoe_if.h
+-header-test-                  += linux/qed/rdma_common.h
+-header-test-                  += linux/qed/storage_common.h
+-header-test-                  += linux/qed/tcp_common.h
+-header-test-                  += linux/qnx6_fs.h
+-header-test-                  += linux/quicklist.h
+-header-test-                  += linux/ramfs.h
+-header-test-                  += linux/range.h
+-header-test-                  += linux/rcu_node_tree.h
+-header-test-                  += linux/rculist_bl.h
+-header-test-                  += linux/rculist_nulls.h
+-header-test-                  += linux/rcutiny.h
+-header-test-                  += linux/rcutree.h
+-header-test-                  += linux/reboot-mode.h
+-header-test-                  += linux/regulator/fixed.h
+-header-test-                  += linux/regulator/gpio-regulator.h
+-header-test-                  += linux/regulator/max8973-regulator.h
+-header-test-                  += linux/regulator/of_regulator.h
+-header-test-                  += linux/regulator/tps51632-regulator.h
+-header-test-                  += linux/regulator/tps62360.h
+-header-test-                  += linux/regulator/tps6507x.h
+-header-test-                  += linux/regulator/userspace-consumer.h
+-header-test-                  += linux/remoteproc/st_slim_rproc.h
+-header-test-                  += linux/reset/socfpga.h
+-header-test-                  += linux/reset/sunxi.h
+-header-test-                  += linux/rtc/m48t59.h
+-header-test-                  += linux/rtc/rtc-omap.h
+-header-test-                  += linux/rtc/sirfsoc_rtciobrg.h
+-header-test-                  += linux/rwlock.h
+-header-test-                  += linux/rwlock_types.h
+-header-test-                  += linux/scc.h
+-header-test-                  += linux/sched/deadline.h
+-header-test-                  += linux/sched/smt.h
+-header-test-                  += linux/sched/sysctl.h
+-header-test-                  += linux/sched_clock.h
+-header-test-                  += linux/scpi_protocol.h
+-header-test-                  += linux/scx200_gpio.h
+-header-test-                  += linux/seccomp.h
+-header-test-                  += linux/sed-opal.h
+-header-test-                  += linux/seg6_iptunnel.h
+-header-test-                  += linux/selection.h
+-header-test-                  += linux/set_memory.h
+-header-test-                  += linux/shrinker.h
+-header-test-                  += linux/sirfsoc_dma.h
+-header-test-                  += linux/skb_array.h
+-header-test-                  += linux/slab_def.h
+-header-test-                  += linux/slub_def.h
+-header-test-                  += linux/sm501.h
+-header-test-                  += linux/smc91x.h
+-header-test-                  += linux/static_key.h
+-header-test-                  += linux/soc/actions/owl-sps.h
+-header-test-                  += linux/soc/amlogic/meson-canvas.h
+-header-test-                  += linux/soc/brcmstb/brcmstb.h
+-header-test-                  += linux/soc/ixp4xx/npe.h
+-header-test-                  += linux/soc/mediatek/infracfg.h
+-header-test-                  += linux/soc/qcom/smd-rpm.h
+-header-test-                  += linux/soc/qcom/smem.h
+-header-test-                  += linux/soc/qcom/smem_state.h
+-header-test-                  += linux/soc/qcom/wcnss_ctrl.h
+-header-test-                  += linux/soc/renesas/rcar-rst.h
+-header-test-                  += linux/soc/samsung/exynos-pmu.h
+-header-test-                  += linux/soc/sunxi/sunxi_sram.h
+-header-test-                  += linux/soc/ti/ti-msgmgr.h
+-header-test-                  += linux/soc/ti/ti_sci_inta_msi.h
+-header-test-                  += linux/soc/ti/ti_sci_protocol.h
+-header-test-                  += linux/soundwire/sdw.h
+-header-test-                  += linux/soundwire/sdw_intel.h
+-header-test-                  += linux/soundwire/sdw_type.h
+-header-test-                  += linux/spi/ad7877.h
+-header-test-                  += linux/spi/ads7846.h
+-header-test-                  += linux/spi/at86rf230.h
+-header-test-                  += linux/spi/ds1305.h
+-header-test-                  += linux/spi/libertas_spi.h
+-header-test-                  += linux/spi/lms283gf05.h
+-header-test-                  += linux/spi/max7301.h
+-header-test-                  += linux/spi/mcp23s08.h
+-header-test-                  += linux/spi/rspi.h
+-header-test-                  += linux/spi/s3c24xx.h
+-header-test-                  += linux/spi/sh_msiof.h
+-header-test-                  += linux/spi/spi-fsl-dspi.h
+-header-test-                  += linux/spi/spi_bitbang.h
+-header-test-                  += linux/spi/spi_gpio.h
+-header-test-                  += linux/spi/xilinx_spi.h
+-header-test-                  += linux/spinlock_api_smp.h
+-header-test-                  += linux/spinlock_api_up.h
+-header-test-                  += linux/spinlock_types.h
+-header-test-                  += linux/splice.h
+-header-test-                  += linux/sram.h
+-header-test-                  += linux/srcutiny.h
+-header-test-                  += linux/srcutree.h
+-header-test-                  += linux/ssb/ssb_driver_chipcommon.h
+-header-test-                  += linux/ssb/ssb_driver_extif.h
+-header-test-                  += linux/ssb/ssb_driver_mips.h
+-header-test-                  += linux/ssb/ssb_driver_pci.h
+-header-test-                  += linux/ssbi.h
+-header-test-                  += linux/stackdepot.h
+-header-test-                  += linux/stmp3xxx_rtc_wdt.h
+-header-test-                  += linux/string_helpers.h
+-header-test-                  += linux/sungem_phy.h
+-header-test-                  += linux/sunrpc/msg_prot.h
+-header-test-                  += linux/sunrpc/rpc_pipe_fs.h
+-header-test-                  += linux/sunrpc/xprtmultipath.h
+-header-test-                  += linux/sunrpc/xprtsock.h
+-header-test-                  += linux/sunxi-rsb.h
+-header-test-                  += linux/svga.h
+-header-test-                  += linux/sw842.h
+-header-test-                  += linux/swapfile.h
+-header-test-                  += linux/swapops.h
+-header-test-                  += linux/swiotlb.h
+-header-test-                  += linux/sysv_fs.h
+-header-test-                  += linux/t10-pi.h
+-header-test-                  += linux/task_io_accounting.h
+-header-test-                  += linux/tick.h
+-header-test-                  += linux/timb_dma.h
+-header-test-                  += linux/timekeeping.h
+-header-test-                  += linux/timekeeping32.h
+-header-test-                  += linux/ts-nbus.h
+-header-test-                  += linux/tsacct_kern.h
+-header-test-                  += linux/tty_flip.h
+-header-test-                  += linux/tty_ldisc.h
+-header-test-                  += linux/ucb1400.h
+-header-test-                  += linux/usb/association.h
+-header-test-                  += linux/usb/cdc-wdm.h
+-header-test-                  += linux/usb/cdc_ncm.h
+-header-test-                  += linux/usb/ezusb.h
+-header-test-                  += linux/usb/gadget_configfs.h
+-header-test-                  += linux/usb/gpio_vbus.h
+-header-test-                  += linux/usb/hcd.h
+-header-test-                  += linux/usb/iowarrior.h
+-header-test-                  += linux/usb/irda.h
+-header-test-                  += linux/usb/isp116x.h
+-header-test-                  += linux/usb/isp1362.h
+-header-test-                  += linux/usb/musb.h
+-header-test-                  += linux/usb/net2280.h
+-header-test-                  += linux/usb/ohci_pdriver.h
+-header-test-                  += linux/usb/otg-fsm.h
+-header-test-                  += linux/usb/pd_ado.h
+-header-test-                  += linux/usb/r8a66597.h
+-header-test-                  += linux/usb/rndis_host.h
+-header-test-                  += linux/usb/serial.h
+-header-test-                  += linux/usb/sl811.h
+-header-test-                  += linux/usb/storage.h
+-header-test-                  += linux/usb/uas.h
+-header-test-                  += linux/usb/usb338x.h
+-header-test-                  += linux/usb/usbnet.h
+-header-test-                  += linux/usb/wusb-wa.h
+-header-test-                  += linux/usb/xhci-dbgp.h
+-header-test-                  += linux/usb_usual.h
+-header-test-                  += linux/user-return-notifier.h
+-header-test-                  += linux/userfaultfd_k.h
+-header-test-                  += linux/verification.h
+-header-test-                  += linux/vgaarb.h
+-header-test-                  += linux/via_core.h
+-header-test-                  += linux/via_i2c.h
+-header-test-                  += linux/virtio_byteorder.h
+-header-test-                  += linux/virtio_ring.h
+-header-test-                  += linux/visorbus.h
+-header-test-                  += linux/vme.h
+-header-test-                  += linux/vmstat.h
+-header-test-                  += linux/vmw_vmci_api.h
+-header-test-                  += linux/vmw_vmci_defs.h
+-header-test-                  += linux/vringh.h
+-header-test-                  += linux/vt_buffer.h
+-header-test-                  += linux/zorro.h
+-header-test-                  += linux/zpool.h
+-header-test-                  += math-emu/double.h
+-header-test-                  += math-emu/op-common.h
+-header-test-                  += math-emu/quad.h
+-header-test-                  += math-emu/single.h
+-header-test-                  += math-emu/soft-fp.h
+-header-test-                  += media/davinci/dm355_ccdc.h
+-header-test-                  += media/davinci/dm644x_ccdc.h
+-header-test-                  += media/davinci/isif.h
+-header-test-                  += media/davinci/vpbe_osd.h
+-header-test-                  += media/davinci/vpbe_types.h
+-header-test-                  += media/davinci/vpif_types.h
+-header-test-                  += media/demux.h
+-header-test-                  += media/drv-intf/soc_mediabus.h
+-header-test-                  += media/dvb_net.h
+-header-test-                  += media/fwht-ctrls.h
+-header-test-                  += media/i2c/ad9389b.h
+-header-test-                  += media/i2c/adv7343.h
+-header-test-                  += media/i2c/adv7511.h
+-header-test-                  += media/i2c/adv7842.h
+-header-test-                  += media/i2c/m5mols.h
+-header-test-                  += media/i2c/mt9m032.h
+-header-test-                  += media/i2c/mt9t112.h
+-header-test-                  += media/i2c/mt9v032.h
+-header-test-                  += media/i2c/ov2659.h
+-header-test-                  += media/i2c/ov7670.h
+-header-test-                  += media/i2c/rj54n1cb0c.h
+-header-test-                  += media/i2c/saa6588.h
+-header-test-                  += media/i2c/saa7115.h
+-header-test-                  += media/i2c/sr030pc30.h
+-header-test-                  += media/i2c/tc358743.h
+-header-test-                  += media/i2c/tda1997x.h
+-header-test-                  += media/i2c/ths7303.h
+-header-test-                  += media/i2c/tvaudio.h
+-header-test-                  += media/i2c/tvp514x.h
+-header-test-                  += media/i2c/tvp7002.h
+-header-test-                  += media/i2c/wm8775.h
+-header-test-                  += media/imx.h
+-header-test-                  += media/media-dev-allocator.h
+-header-test-                  += media/mpeg2-ctrls.h
+-header-test-                  += media/rcar-fcp.h
+-header-test-                  += media/tuner-types.h
+-header-test-                  += media/tveeprom.h
+-header-test-                  += media/v4l2-flash-led-class.h
+-header-test-                  += misc/altera.h
+-header-test-                  += misc/cxl-base.h
+-header-test-                  += misc/cxllib.h
+-header-test-                  += net/9p/9p.h
+-header-test-                  += net/9p/client.h
+-header-test-                  += net/9p/transport.h
+-header-test-                  += net/af_vsock.h
+-header-test-                  += net/ax88796.h
+-header-test-                  += net/bluetooth/hci.h
+-header-test-                  += net/bluetooth/hci_core.h
+-header-test-                  += net/bluetooth/hci_mon.h
+-header-test-                  += net/bluetooth/hci_sock.h
+-header-test-                  += net/bluetooth/l2cap.h
+-header-test-                  += net/bluetooth/mgmt.h
+-header-test-                  += net/bluetooth/rfcomm.h
+-header-test-                  += net/bluetooth/sco.h
+-header-test-                  += net/bond_options.h
+-header-test-                  += net/caif/cfsrvl.h
+-header-test-                  += net/codel_impl.h
+-header-test-                  += net/codel_qdisc.h
+-header-test-                  += net/compat.h
+-header-test-                  += net/datalink.h
+-header-test-                  += net/dcbevent.h
+-header-test-                  += net/dcbnl.h
+-header-test-                  += net/dn_dev.h
+-header-test-                  += net/dn_fib.h
+-header-test-                  += net/dn_neigh.h
+-header-test-                  += net/dn_nsp.h
+-header-test-                  += net/dn_route.h
+-header-test-                  += net/erspan.h
+-header-test-                  += net/esp.h
+-header-test-                  += net/ethoc.h
+-header-test-                  += net/firewire.h
+-header-test-                  += net/flow_offload.h
+-header-test-                  += net/fq.h
+-header-test-                  += net/fq_impl.h
+-header-test-                  += net/garp.h
+-header-test-                  += net/gtp.h
+-header-test-                  += net/gue.h
+-header-test-                  += net/hwbm.h
+-header-test-                  += net/ila.h
+-header-test-                  += net/inet6_connection_sock.h
+-header-test-                  += net/inet_common.h
+-header-test-                  += net/inet_frag.h
+-header-test-                  += net/ip6_route.h
+-header-test-                  += net/ip_vs.h
+-header-test-                  += net/ipcomp.h
+-header-test-                  += net/ipconfig.h
+-header-test-                  += net/iucv/af_iucv.h
+-header-test-                  += net/iucv/iucv.h
+-header-test-                  += net/lapb.h
+-header-test-                  += net/llc_c_ac.h
+-header-test-                  += net/llc_c_st.h
+-header-test-                  += net/llc_s_ac.h
+-header-test-                  += net/llc_s_ev.h
+-header-test-                  += net/llc_s_st.h
+-header-test-                  += net/mpls_iptunnel.h
+-header-test-                  += net/mrp.h
+-header-test-                  += net/ncsi.h
+-header-test-                  += net/netevent.h
+-header-test-                  += net/netns/can.h
+-header-test-                  += net/netns/generic.h
+-header-test-                  += net/netns/ieee802154_6lowpan.h
+-header-test-                  += net/netns/ipv4.h
+-header-test-                  += net/netns/ipv6.h
+-header-test-                  += net/netns/mpls.h
+-header-test-                  += net/netns/nftables.h
+-header-test-                  += net/netns/sctp.h
+-header-test-                  += net/netrom.h
+-header-test-                  += net/p8022.h
+-header-test-                  += net/phonet/pep.h
+-header-test-                  += net/phonet/phonet.h
+-header-test-                  += net/phonet/pn_dev.h
+-header-test-                  += net/pptp.h
+-header-test-                  += net/psample.h
+-header-test-                  += net/psnap.h
+-header-test-                  += net/regulatory.h
+-header-test-                  += net/rose.h
+-header-test-                  += net/sctp/auth.h
+-header-test-                  += net/sctp/stream_interleave.h
+-header-test-                  += net/sctp/stream_sched.h
+-header-test-                  += net/sctp/tsnmap.h
+-header-test-                  += net/sctp/ulpevent.h
+-header-test-                  += net/sctp/ulpqueue.h
+-header-test-                  += net/secure_seq.h
+-header-test-                  += net/smc.h
+-header-test-                  += net/stp.h
+-header-test-                  += net/transp_v6.h
+-header-test-                  += net/tun_proto.h
+-header-test-                  += net/udplite.h
+-header-test-                  += net/xdp.h
+-header-test-                  += net/xdp_priv.h
+-header-test-                  += pcmcia/cistpl.h
+-header-test-                  += pcmcia/ds.h
+-header-test-                  += rdma/tid_rdma_defs.h
+-header-test-                  += scsi/fc/fc_encaps.h
+-header-test-                  += scsi/fc/fc_fc2.h
+-header-test-                  += scsi/fc/fc_fcoe.h
+-header-test-                  += scsi/fc/fc_fip.h
+-header-test-                  += scsi/fc_encode.h
+-header-test-                  += scsi/fc_frame.h
+-header-test-                  += scsi/iser.h
+-header-test-                  += scsi/libfc.h
+-header-test-                  += scsi/libfcoe.h
+-header-test-                  += scsi/libsas.h
+-header-test-                  += scsi/sas_ata.h
+-header-test-                  += scsi/scsi_cmnd.h
+-header-test-                  += scsi/scsi_dbg.h
+-header-test-                  += scsi/scsi_device.h
+-header-test-                  += scsi/scsi_dh.h
+-header-test-                  += scsi/scsi_eh.h
+-header-test-                  += scsi/scsi_host.h
+-header-test-                  += scsi/scsi_ioctl.h
+-header-test-                  += scsi/scsi_request.h
+-header-test-                  += scsi/scsi_tcq.h
+-header-test-                  += scsi/scsi_transport.h
+-header-test-                  += scsi/scsi_transport_fc.h
+-header-test-                  += scsi/scsi_transport_sas.h
+-header-test-                  += scsi/scsi_transport_spi.h
+-header-test-                  += scsi/scsi_transport_srp.h
+-header-test-                  += scsi/scsicam.h
+-header-test-                  += scsi/sg.h
+-header-test-                  += soc/arc/aux.h
+-header-test-                  += soc/arc/mcip.h
+-header-test-                  += soc/arc/timers.h
+-header-test-                  += soc/brcmstb/common.h
+-header-test-                  += soc/fsl/bman.h
+-header-test-                  += soc/fsl/qe/qe.h
+-header-test-                  += soc/fsl/qe/qe_ic.h
+-header-test-                  += soc/fsl/qe/qe_tdm.h
+-header-test-                  += soc/fsl/qe/ucc.h
+-header-test-                  += soc/fsl/qe/ucc_fast.h
+-header-test-                  += soc/fsl/qe/ucc_slow.h
+-header-test-                  += soc/fsl/qman.h
+-header-test-                  += soc/nps/common.h
+-header-test-$(CONFIG_ARC)     += soc/nps/mtm.h
+-header-test-                  += soc/qcom/cmd-db.h
+-header-test-                  += soc/qcom/rpmh.h
+-header-test-                  += soc/qcom/tcs.h
+-header-test-                  += soc/tegra/ahb.h
+-header-test-                  += soc/tegra/bpmp-abi.h
+-header-test-                  += soc/tegra/common.h
+-header-test-                  += soc/tegra/flowctrl.h
+-header-test-                  += soc/tegra/fuse.h
+-header-test-                  += soc/tegra/mc.h
+-header-test-                  += sound/ac97/compat.h
+-header-test-                  += sound/aci.h
+-header-test-                  += sound/ad1843.h
+-header-test-                  += sound/adau1373.h
+-header-test-                  += sound/ak4113.h
+-header-test-                  += sound/ak4114.h
+-header-test-                  += sound/ak4117.h
+-header-test-                  += sound/cs35l33.h
+-header-test-                  += sound/cs35l34.h
+-header-test-                  += sound/cs35l35.h
+-header-test-                  += sound/cs35l36.h
+-header-test-                  += sound/cs4271.h
+-header-test-                  += sound/cs42l52.h
+-header-test-                  += sound/cs8427.h
+-header-test-                  += sound/da7218.h
+-header-test-                  += sound/da7219-aad.h
+-header-test-                  += sound/da7219.h
+-header-test-                  += sound/da9055.h
+-header-test-                  += sound/emu8000.h
+-header-test-                  += sound/emux_synth.h
+-header-test-                  += sound/hda_component.h
+-header-test-                  += sound/hda_hwdep.h
+-header-test-                  += sound/hda_i915.h
+-header-test-                  += sound/hwdep.h
+-header-test-                  += sound/i2c.h
+-header-test-                  += sound/l3.h
+-header-test-                  += sound/max98088.h
+-header-test-                  += sound/max98095.h
+-header-test-                  += sound/mixer_oss.h
+-header-test-                  += sound/omap-hdmi-audio.h
+-header-test-                  += sound/pcm_drm_eld.h
+-header-test-                  += sound/pcm_iec958.h
+-header-test-                  += sound/pcm_oss.h
+-header-test-                  += sound/pxa2xx-lib.h
+-header-test-                  += sound/rt286.h
+-header-test-                  += sound/rt298.h
+-header-test-                  += sound/rt5645.h
+-header-test-                  += sound/rt5659.h
+-header-test-                  += sound/rt5660.h
+-header-test-                  += sound/rt5665.h
+-header-test-                  += sound/rt5670.h
+-header-test-                  += sound/s3c24xx_uda134x.h
+-header-test-                  += sound/seq_device.h
+-header-test-                  += sound/seq_kernel.h
+-header-test-                  += sound/seq_midi_emul.h
+-header-test-                  += sound/seq_oss.h
+-header-test-                  += sound/soc-acpi-intel-match.h
+-header-test-                  += sound/soc-dai.h
+-header-test-                  += sound/soc-dapm.h
+-header-test-                  += sound/soc-dpcm.h
+-header-test-                  += sound/sof/control.h
+-header-test-                  += sound/sof/dai-intel.h
+-header-test-                  += sound/sof/dai.h
+-header-test-                  += sound/sof/header.h
+-header-test-                  += sound/sof/info.h
+-header-test-                  += sound/sof/pm.h
+-header-test-                  += sound/sof/stream.h
+-header-test-                  += sound/sof/topology.h
+-header-test-                  += sound/sof/trace.h
+-header-test-                  += sound/sof/xtensa.h
+-header-test-                  += sound/spear_spdif.h
+-header-test-                  += sound/sta32x.h
+-header-test-                  += sound/sta350.h
+-header-test-                  += sound/tea6330t.h
+-header-test-                  += sound/tlv320aic32x4.h
+-header-test-                  += sound/tlv320dac33-plat.h
+-header-test-                  += sound/uda134x.h
+-header-test-                  += sound/wavefront.h
+-header-test-                  += sound/wm8903.h
+-header-test-                  += sound/wm8904.h
+-header-test-                  += sound/wm8960.h
+-header-test-                  += sound/wm8962.h
+-header-test-                  += sound/wm8993.h
+-header-test-                  += sound/wm8996.h
+-header-test-                  += sound/wm9081.h
+-header-test-                  += sound/wm9090.h
+-header-test-                  += target/iscsi/iscsi_target_stat.h
+-header-test-                  += trace/bpf_probe.h
+-header-test-                  += trace/events/9p.h
+-header-test-                  += trace/events/afs.h
+-header-test-                  += trace/events/asoc.h
+-header-test-                  += trace/events/bcache.h
+-header-test-                  += trace/events/block.h
+-header-test-                  += trace/events/cachefiles.h
+-header-test-                  += trace/events/cgroup.h
+-header-test-                  += trace/events/clk.h
+-header-test-                  += trace/events/cma.h
+-header-test-                  += trace/events/ext4.h
+-header-test-                  += trace/events/f2fs.h
+-header-test-                  += trace/events/fs_dax.h
+-header-test-                  += trace/events/fscache.h
+-header-test-                  += trace/events/fsi.h
+-header-test-                  += trace/events/fsi_master_ast_cf.h
+-header-test-                  += trace/events/fsi_master_gpio.h
+-header-test-                  += trace/events/huge_memory.h
+-header-test-                  += trace/events/ib_mad.h
+-header-test-                  += trace/events/ib_umad.h
+-header-test-                  += trace/events/iscsi.h
+-header-test-                  += trace/events/jbd2.h
+-header-test-                  += trace/events/kvm.h
+-header-test-                  += trace/events/kyber.h
+-header-test-                  += trace/events/libata.h
+-header-test-                  += trace/events/mce.h
+-header-test-                  += trace/events/mdio.h
+-header-test-                  += trace/events/migrate.h
+-header-test-                  += trace/events/mmflags.h
+-header-test-                  += trace/events/nbd.h
+-header-test-                  += trace/events/nilfs2.h
+-header-test-                  += trace/events/pwc.h
+-header-test-                  += trace/events/rdma.h
+-header-test-                  += trace/events/rpcgss.h
+-header-test-                  += trace/events/rpcrdma.h
+-header-test-                  += trace/events/rxrpc.h
+-header-test-                  += trace/events/scsi.h
+-header-test-                  += trace/events/siox.h
+-header-test-                  += trace/events/spi.h
+-header-test-                  += trace/events/swiotlb.h
+-header-test-                  += trace/events/syscalls.h
+-header-test-                  += trace/events/target.h
+-header-test-                  += trace/events/thermal_power_allocator.h
+-header-test-                  += trace/events/timer.h
+-header-test-                  += trace/events/wbt.h
+-header-test-                  += trace/events/xen.h
+-header-test-                  += trace/perf.h
+-header-test-                  += trace/trace_events.h
+-header-test-                  += uapi/drm/vmwgfx_drm.h
+-header-test-                  += uapi/linux/a.out.h
+-header-test-                  += uapi/linux/coda.h
+-header-test-                  += uapi/linux/coda_psdev.h
+-header-test-                  += uapi/linux/errqueue.h
+-header-test-                  += uapi/linux/eventpoll.h
+-header-test-                  += uapi/linux/hdlc/ioctl.h
+-header-test-                  += uapi/linux/input.h
+-header-test-                  += uapi/linux/kvm.h
+-header-test-                  += uapi/linux/kvm_para.h
+-header-test-                  += uapi/linux/lightnvm.h
+-header-test-                  += uapi/linux/mic_common.h
+-header-test-                  += uapi/linux/mman.h
+-header-test-                  += uapi/linux/nilfs2_ondisk.h
+-header-test-                  += uapi/linux/patchkey.h
+-header-test-                  += uapi/linux/ptrace.h
+-header-test-                  += uapi/linux/scc.h
+-header-test-                  += uapi/linux/seg6_iptunnel.h
+-header-test-                  += uapi/linux/smc_diag.h
+-header-test-                  += uapi/linux/timex.h
+-header-test-                  += uapi/linux/videodev2.h
+-header-test-                  += uapi/scsi/scsi_bsg_fc.h
+-header-test-                  += uapi/sound/asound.h
+-header-test-                  += uapi/sound/sof/eq.h
+-header-test-                  += uapi/sound/sof/fw.h
+-header-test-                  += uapi/sound/sof/header.h
+-header-test-                  += uapi/sound/sof/manifest.h
+-header-test-                  += uapi/sound/sof/trace.h
+-header-test-                  += uapi/xen/evtchn.h
+-header-test-                  += uapi/xen/gntdev.h
+-header-test-                  += uapi/xen/privcmd.h
+-header-test-                  += vdso/vsyscall.h
+-header-test-                  += video/broadsheetfb.h
+-header-test-                  += video/cvisionppc.h
+-header-test-                  += video/gbe.h
+-header-test-                  += video/kyro.h
+-header-test-                  += video/maxinefb.h
+-header-test-                  += video/metronomefb.h
+-header-test-                  += video/neomagic.h
+-header-test-                  += video/of_display_timing.h
+-header-test-                  += video/omapvrfb.h
+-header-test-                  += video/s1d13xxxfb.h
+-header-test-                  += video/sstfb.h
+-header-test-                  += video/tgafb.h
+-header-test-                  += video/udlfb.h
+-header-test-                  += video/uvesafb.h
+-header-test-                  += video/vga.h
+-header-test-                  += video/w100fb.h
+-header-test-                  += xen/acpi.h
+-header-test-                  += xen/arm/hypercall.h
+-header-test-                  += xen/arm/page-coherent.h
+-header-test-                  += xen/arm/page.h
+-header-test-                  += xen/balloon.h
+-header-test-                  += xen/events.h
+-header-test-                  += xen/features.h
+-header-test-                  += xen/grant_table.h
+-header-test-                  += xen/hvm.h
+-header-test-                  += xen/interface/callback.h
+-header-test-                  += xen/interface/event_channel.h
+-header-test-                  += xen/interface/grant_table.h
+-header-test-                  += xen/interface/hvm/dm_op.h
+-header-test-                  += xen/interface/hvm/hvm_op.h
+-header-test-                  += xen/interface/hvm/hvm_vcpu.h
+-header-test-                  += xen/interface/hvm/params.h
+-header-test-                  += xen/interface/hvm/start_info.h
+-header-test-                  += xen/interface/io/9pfs.h
+-header-test-                  += xen/interface/io/blkif.h
+-header-test-                  += xen/interface/io/console.h
+-header-test-                  += xen/interface/io/displif.h
+-header-test-                  += xen/interface/io/fbif.h
+-header-test-                  += xen/interface/io/kbdif.h
+-header-test-                  += xen/interface/io/netif.h
+-header-test-                  += xen/interface/io/pciif.h
+-header-test-                  += xen/interface/io/protocols.h
+-header-test-                  += xen/interface/io/pvcalls.h
+-header-test-                  += xen/interface/io/ring.h
+-header-test-                  += xen/interface/io/sndif.h
+-header-test-                  += xen/interface/io/tpmif.h
+-header-test-                  += xen/interface/io/vscsiif.h
+-header-test-                  += xen/interface/io/xs_wire.h
+-header-test-                  += xen/interface/memory.h
+-header-test-                  += xen/interface/nmi.h
+-header-test-                  += xen/interface/physdev.h
+-header-test-                  += xen/interface/platform.h
+-header-test-                  += xen/interface/sched.h
+-header-test-                  += xen/interface/vcpu.h
+-header-test-                  += xen/interface/version.h
+-header-test-                  += xen/interface/xen-mca.h
+-header-test-                  += xen/interface/xen.h
+-header-test-                  += xen/interface/xenpmu.h
+-header-test-                  += xen/mem-reservation.h
+-header-test-                  += xen/page.h
+-header-test-                  += xen/platform_pci.h
+-header-test-                  += xen/swiotlb-xen.h
+-header-test-                  += xen/xen-front-pgdir-shbuf.h
+-header-test-                  += xen/xen-ops.h
+-header-test-                  += xen/xen.h
+-header-test-                  += xen/xenbus.h
+-
+-# Do not include directly
+-header-test- += linux/compiler-clang.h
+-header-test- += linux/compiler-gcc.h
+-header-test- += linux/patchkey.h
+-header-test- += linux/rwlock_api_smp.h
+-header-test- += linux/spinlock_types_up.h
+-header-test- += linux/spinlock_up.h
+-header-test- += linux/wimax/debug.h
+-header-test- += rdma/uverbs_named_ioctl.h
+-
+-# asm-generic/*.h is used by asm/*.h, and should not be included directly
+-header-test- += asm-generic/% uapi/asm-generic/%
+-
+-# Timestamp files touched by Kconfig
+-header-test- += config/%
+-
+-# Timestamp files touched by scripts/adjust_autoksyms.sh
+-header-test- += ksym/%
+-
+-# You could compile-test these, but maybe not so useful...
+-header-test- += dt-bindings/%
+-
+-# Do not test generated headers. Stale headers are often left over when you
+-# traverse the git history without cleaning.
+-header-test- += generated/%
+-
+-# The rest are compile-tested
+-header-test-pattern-y += */*.h */*/*.h */*/*/*.h */*/*/*/*.h
+--- a/init/Kconfig
++++ b/init/Kconfig
+@@ -105,29 +105,9 @@ config COMPILE_TEST
+         here. If you are a user/distributor, say N here to exclude useless
+         drivers to be distributed.
+-config HEADER_TEST
+-      bool "Compile test headers that should be standalone compilable"
+-      help
+-        Compile test headers listed in header-test-y target to ensure they are
+-        self-contained, i.e. compilable as standalone units.
+-
+-        If you are a developer or tester and want to ensure the requested
+-        headers are self-contained, say Y here. Otherwise, choose N.
+-
+-config KERNEL_HEADER_TEST
+-      bool "Compile test kernel headers"
+-      depends on HEADER_TEST
+-      help
+-        Headers in include/ are used to build external moduls.
+-        Compile test them to ensure they are self-contained, i.e.
+-        compilable as standalone units.
+-
+-        If you are a developer or tester and want to ensure the headers
+-        in include/ are self-contained, say Y here. Otherwise, choose N.
+-
+ config UAPI_HEADER_TEST
+       bool "Compile test UAPI headers"
+-      depends on HEADER_TEST && HEADERS_INSTALL && CC_CAN_LINK
++      depends on HEADERS_INSTALL && CC_CAN_LINK
+       help
+         Compile test headers exported to user-space to ensure they are
+         self-contained, i.e. compilable as standalone units.
+--- a/scripts/Makefile.build
++++ b/scripts/Makefile.build
+@@ -283,15 +283,6 @@ quiet_cmd_cc_lst_c = MKLST   $@
+ $(obj)/%.lst: $(src)/%.c FORCE
+       $(call if_changed_dep,cc_lst_c)
+-# header test (header-test-y, header-test-m target)
+-# ---------------------------------------------------------------------------
+-
+-quiet_cmd_cc_s_h = CC      $@
+-      cmd_cc_s_h = $(CC) $(c_flags) -S -o $@ -x c /dev/null -include $<
+-
+-$(obj)/%.h.s: $(src)/%.h FORCE
+-      $(call if_changed_dep,cc_s_h)
+-
+ # Compile assembler sources (.S)
+ # ---------------------------------------------------------------------------
+--- a/scripts/Makefile.lib
++++ b/scripts/Makefile.lib
+@@ -65,20 +65,6 @@ extra-y += $(patsubst %.dtb,%.dt.yaml, $
+ extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtb,%.dt.yaml, $(dtb-))
+ endif
+-# Test self-contained headers
+-
+-# Wildcard searches in $(srctree)/$(src)/, but not in $(objtree)/$(obj)/.
+-# Stale generated headers are often left over, so pattern matching should
+-# be avoided. Please notice $(srctree)/$(src)/ and $(objtree)/$(obj) point
+-# to the same location for in-tree building. So, header-test-pattern-y should
+-# be used with care.
+-header-test-y += $(filter-out $(header-test-), \
+-              $(patsubst $(srctree)/$(src)/%, %, \
+-              $(wildcard $(addprefix $(srctree)/$(src)/, \
+-              $(header-test-pattern-y)))))
+-
+-extra-$(CONFIG_HEADER_TEST) += $(addsuffix .s, $(header-test-y) $(header-test-m))
+-
+ # Add subdir path
+ extra-y               := $(addprefix $(obj)/,$(extra-y))
+--- a/usr/include/Makefile
++++ b/usr/include/Makefile
+@@ -99,9 +99,13 @@ endif
+ # asm-generic/*.h is used by asm/*.h, and should not be included directly
+ header-test- += asm-generic/%
+-# The rest are compile-tested
+-header-test-y += $(filter-out $(header-test-), \
+-                      $(patsubst $(obj)/%,%, $(wildcard \
+-                      $(addprefix $(obj)/, *.h */*.h */*/*.h */*/*/*.h))))
++extra-y := $(patsubst %.h,%.hdrtest, $(filter-out $(header-test-), \
++              $(patsubst $(obj)/%,%, $(shell find $(obj) -name '*.h'))))
++
++quiet_cmd_hdrtest = HDRTEST $<
++      cmd_hdrtest = $(CC) $(c_flags) -S -o /dev/null -x c /dev/null -include $<; touch $@
++
++$(obj)/%.hdrtest: $(obj)/%.h FORCE
++      $(call if_changed_dep,hdrtest)
+ clean-files += $(filter-out Makefile, $(notdir $(wildcard $(obj)/*)))
diff --git a/queue-5.4/kbuild-remove-unneeded-variable-single-all.patch b/queue-5.4/kbuild-remove-unneeded-variable-single-all.patch
new file mode 100644 (file)
index 0000000..dd672a8
--- /dev/null
@@ -0,0 +1,35 @@
+From 35e046a203ee3bc8ba9ae3561b50de02646dfb81 Mon Sep 17 00:00:00 2001
+From: Masahiro Yamada <yamada.masahiro@socionext.com>
+Date: Wed, 16 Oct 2019 14:12:15 +0900
+Subject: kbuild: remove unneeded variable, single-all
+
+From: Masahiro Yamada <yamada.masahiro@socionext.com>
+
+commit 35e046a203ee3bc8ba9ae3561b50de02646dfb81 upstream.
+
+When single-build is set, everything in $(MAKECMDGOALS) is a single
+target. You can use $(MAKECMDGOALS) to list out the single targets.
+
+Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Makefile |    6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+--- a/Makefile
++++ b/Makefile
+@@ -1761,11 +1761,9 @@ tools/%: FORCE
+ ifdef single-build
+-single-all := $(filter $(single-targets), $(MAKECMDGOALS))
+-
+ # .ko is special because modpost is needed
+-single-ko := $(sort $(filter %.ko, $(single-all)))
+-single-no-ko := $(sort $(patsubst %.ko,%.mod, $(single-all)))
++single-ko := $(sort $(filter %.ko, $(MAKECMDGOALS)))
++single-no-ko := $(sort $(patsubst %.ko,%.mod, $(MAKECMDGOALS)))
+ $(single-ko): single_modpost
+       @:
diff --git a/queue-5.4/kvm-check-for-a-bad-hva-before-dropping-into-the-ghc-slow-path.patch b/queue-5.4/kvm-check-for-a-bad-hva-before-dropping-into-the-ghc-slow-path.patch
new file mode 100644 (file)
index 0000000..8352e4d
--- /dev/null
@@ -0,0 +1,77 @@
+From fcfbc617547fc6d9552cb6c1c563b6a90ee98085 Mon Sep 17 00:00:00 2001
+From: Sean Christopherson <sean.j.christopherson@intel.com>
+Date: Thu, 9 Jan 2020 15:56:18 -0800
+Subject: KVM: Check for a bad hva before dropping into the ghc slow path
+
+From: Sean Christopherson <sean.j.christopherson@intel.com>
+
+commit fcfbc617547fc6d9552cb6c1c563b6a90ee98085 upstream.
+
+When reading/writing using the guest/host cache, check for a bad hva
+before checking for a NULL memslot, which triggers the slow path for
+handing cross-page accesses.  Because the memslot is nullified on error
+by __kvm_gfn_to_hva_cache_init(), if the bad hva is encountered after
+crossing into a new page, then the kvm_{read,write}_guest() slow path
+could potentially write/access the first chunk prior to detecting the
+bad hva.
+
+Arguably, performing a partial access is semantically correct from an
+architectural perspective, but that behavior is certainly not intended.
+In the original implementation, memslot was not explicitly nullified
+and therefore the partial access behavior varied based on whether the
+memslot itself was null, or if the hva was simply bad.  The current
+behavior was introduced as a seemingly unintentional side effect in
+commit f1b9dd5eb86c ("kvm: Disallow wraparound in
+kvm_gfn_to_hva_cache_init"), which justified the change with "since some
+callers don't check the return code from this function, it sit seems
+prudent to clear ghc->memslot in the event of an error".
+
+Regardless of intent, the partial access is dependent on _not_ checking
+the result of the cache initialization, which is arguably a bug in its
+own right, at best simply weird.
+
+Fixes: 8f964525a121 ("KVM: Allow cross page reads and writes from cached translations.")
+Cc: Jim Mattson <jmattson@google.com>
+Cc: Andrew Honig <ahonig@google.com>
+Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ virt/kvm/kvm_main.c |   12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/virt/kvm/kvm_main.c
++++ b/virt/kvm/kvm_main.c
+@@ -2275,12 +2275,12 @@ int kvm_write_guest_offset_cached(struct
+       if (slots->generation != ghc->generation)
+               __kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len);
+-      if (unlikely(!ghc->memslot))
+-              return kvm_write_guest(kvm, gpa, data, len);
+-
+       if (kvm_is_error_hva(ghc->hva))
+               return -EFAULT;
++      if (unlikely(!ghc->memslot))
++              return kvm_write_guest(kvm, gpa, data, len);
++
+       r = __copy_to_user((void __user *)ghc->hva + offset, data, len);
+       if (r)
+               return -EFAULT;
+@@ -2308,12 +2308,12 @@ int kvm_read_guest_cached(struct kvm *kv
+       if (slots->generation != ghc->generation)
+               __kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len);
+-      if (unlikely(!ghc->memslot))
+-              return kvm_read_guest(kvm, ghc->gpa, data, len);
+-
+       if (kvm_is_error_hva(ghc->hva))
+               return -EFAULT;
++      if (unlikely(!ghc->memslot))
++              return kvm_read_guest(kvm, ghc->gpa, data, len);
++
+       r = __copy_from_user(data, (void __user *)ghc->hva, len);
+       if (r)
+               return -EFAULT;
diff --git a/queue-5.4/kvm-svm-override-default-mmio-mask-if-memory-encryption-is-enabled.patch b/queue-5.4/kvm-svm-override-default-mmio-mask-if-memory-encryption-is-enabled.patch
new file mode 100644 (file)
index 0000000..0201cb1
--- /dev/null
@@ -0,0 +1,89 @@
+From 52918ed5fcf05d97d257f4131e19479da18f5d16 Mon Sep 17 00:00:00 2001
+From: Tom Lendacky <thomas.lendacky@amd.com>
+Date: Thu, 9 Jan 2020 17:42:16 -0600
+Subject: KVM: SVM: Override default MMIO mask if memory encryption is enabled
+
+From: Tom Lendacky <thomas.lendacky@amd.com>
+
+commit 52918ed5fcf05d97d257f4131e19479da18f5d16 upstream.
+
+The KVM MMIO support uses bit 51 as the reserved bit to cause nested page
+faults when a guest performs MMIO. The AMD memory encryption support uses
+a CPUID function to define the encryption bit position. Given this, it is
+possible that these bits can conflict.
+
+Use svm_hardware_setup() to override the MMIO mask if memory encryption
+support is enabled. Various checks are performed to ensure that the mask
+is properly defined and rsvd_bits() is used to generate the new mask (as
+was done prior to the change that necessitated this patch).
+
+Fixes: 28a1f3ac1d0c ("kvm: x86: Set highest physical address bits in non-present/reserved SPTEs")
+Suggested-by: Sean Christopherson <sean.j.christopherson@intel.com>
+Reviewed-by: Sean Christopherson <sean.j.christopherson@intel.com>
+Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/kvm/svm.c |   43 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 43 insertions(+)
+
+--- a/arch/x86/kvm/svm.c
++++ b/arch/x86/kvm/svm.c
+@@ -1298,6 +1298,47 @@ static void shrink_ple_window(struct kvm
+       }
+ }
++/*
++ * The default MMIO mask is a single bit (excluding the present bit),
++ * which could conflict with the memory encryption bit. Check for
++ * memory encryption support and override the default MMIO mask if
++ * memory encryption is enabled.
++ */
++static __init void svm_adjust_mmio_mask(void)
++{
++      unsigned int enc_bit, mask_bit;
++      u64 msr, mask;
++
++      /* If there is no memory encryption support, use existing mask */
++      if (cpuid_eax(0x80000000) < 0x8000001f)
++              return;
++
++      /* If memory encryption is not enabled, use existing mask */
++      rdmsrl(MSR_K8_SYSCFG, msr);
++      if (!(msr & MSR_K8_SYSCFG_MEM_ENCRYPT))
++              return;
++
++      enc_bit = cpuid_ebx(0x8000001f) & 0x3f;
++      mask_bit = boot_cpu_data.x86_phys_bits;
++
++      /* Increment the mask bit if it is the same as the encryption bit */
++      if (enc_bit == mask_bit)
++              mask_bit++;
++
++      /*
++       * If the mask bit location is below 52, then some bits above the
++       * physical addressing limit will always be reserved, so use the
++       * rsvd_bits() function to generate the mask. This mask, along with
++       * the present bit, will be used to generate a page fault with
++       * PFER.RSV = 1.
++       *
++       * If the mask bit location is 52 (or above), then clear the mask.
++       */
++      mask = (mask_bit < 52) ? rsvd_bits(mask_bit, 51) | PT_PRESENT_MASK : 0;
++
++      kvm_mmu_set_mmio_spte_mask(mask, mask, PT_WRITABLE_MASK | PT_USER_MASK);
++}
++
+ static __init int svm_hardware_setup(void)
+ {
+       int cpu;
+@@ -1352,6 +1393,8 @@ static __init int svm_hardware_setup(voi
+               }
+       }
++      svm_adjust_mmio_mask();
++
+       for_each_possible_cpu(cpu) {
+               r = svm_cpu_init(cpu);
+               if (r)
diff --git a/queue-5.4/mwifiex-delete-unused-mwifiex_get_intf_num.patch b/queue-5.4/mwifiex-delete-unused-mwifiex_get_intf_num.patch
new file mode 100644 (file)
index 0000000..47ec61c
--- /dev/null
@@ -0,0 +1,47 @@
+From 1c9f329b084b7b8ea6d60d91a202e884cdcf6aae Mon Sep 17 00:00:00 2001
+From: Brian Norris <briannorris@chromium.org>
+Date: Mon, 9 Dec 2019 16:39:11 -0800
+Subject: mwifiex: delete unused mwifiex_get_intf_num()
+
+From: Brian Norris <briannorris@chromium.org>
+
+commit 1c9f329b084b7b8ea6d60d91a202e884cdcf6aae upstream.
+
+Commit 7afb94da3cd8 ("mwifiex: update set_mac_address logic") fixed the
+only user of this function, partly because the author seems to have
+noticed that, as written, it's on the borderline between highly
+misleading and buggy.
+
+Anyway, no sense in keeping dead code around: let's drop it.
+
+Fixes: 7afb94da3cd8 ("mwifiex: update set_mac_address logic")
+Signed-off-by: Brian Norris <briannorris@chromium.org>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/marvell/mwifiex/main.h |   13 -------------
+ 1 file changed, 13 deletions(-)
+
+--- a/drivers/net/wireless/marvell/mwifiex/main.h
++++ b/drivers/net/wireless/marvell/mwifiex/main.h
+@@ -1295,19 +1295,6 @@ mwifiex_copy_rates(u8 *dest, u32 pos, u8
+       return pos;
+ }
+-/* This function return interface number with the same bss_type.
+- */
+-static inline u8
+-mwifiex_get_intf_num(struct mwifiex_adapter *adapter, u8 bss_type)
+-{
+-      u8 i, num = 0;
+-
+-      for (i = 0; i < adapter->priv_num; i++)
+-              if (adapter->priv[i] && adapter->priv[i]->bss_type == bss_type)
+-                      num++;
+-      return num;
+-}
+-
+ /*
+  * This function returns the correct private structure pointer based
+  * upon the BSS type and BSS number.
diff --git a/queue-5.4/mwifiex-drop-most-magic-numbers-from-mwifiex_process_tdls_action_frame.patch b/queue-5.4/mwifiex-drop-most-magic-numbers-from-mwifiex_process_tdls_action_frame.patch
new file mode 100644 (file)
index 0000000..fdc0930
--- /dev/null
@@ -0,0 +1,225 @@
+From 70e5b8f445fd27fde0c5583460e82539a7242424 Mon Sep 17 00:00:00 2001
+From: Brian Norris <briannorris@chromium.org>
+Date: Fri, 6 Dec 2019 11:45:35 -0800
+Subject: mwifiex: drop most magic numbers from mwifiex_process_tdls_action_frame()
+
+From: Brian Norris <briannorris@chromium.org>
+
+commit 70e5b8f445fd27fde0c5583460e82539a7242424 upstream.
+
+Before commit 1e58252e334d ("mwifiex: Fix heap overflow in
+mmwifiex_process_tdls_action_frame()"),
+mwifiex_process_tdls_action_frame() already had too many magic numbers.
+But this commit just added a ton more, in the name of checking for
+buffer overflows. That seems like a really bad idea.
+
+Let's make these magic numbers a little less magic, by
+(a) factoring out 'pos[1]' as 'ie_len'
+(b) using 'sizeof' on the appropriate source or destination fields where
+    possible, instead of bare numbers
+(c) dropping redundant checks, per below.
+
+Regarding redundant checks: the beginning of the loop has this:
+
+                if (pos + 2 + pos[1] > end)
+                        break;
+
+but then individual 'case's include stuff like this:
+
+                       if (pos > end - 3)
+                               return;
+                       if (pos[1] != 1)
+                               return;
+
+Note that the second 'return' (validating the length, pos[1]) combined
+with the above condition (ensuring 'pos + 2 + length' doesn't exceed
+'end'), makes the first 'return' (whose 'if' can be reworded as 'pos >
+end - pos[1] - 2') redundant. Rather than unwind the magic numbers
+there, just drop those conditions.
+
+Fixes: 1e58252e334d ("mwifiex: Fix heap overflow in mmwifiex_process_tdls_action_frame()")
+Signed-off-by: Brian Norris <briannorris@chromium.org>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/marvell/mwifiex/tdls.c |   75 ++++++++++------------------
+ 1 file changed, 28 insertions(+), 47 deletions(-)
+
+--- a/drivers/net/wireless/marvell/mwifiex/tdls.c
++++ b/drivers/net/wireless/marvell/mwifiex/tdls.c
+@@ -894,7 +894,7 @@ void mwifiex_process_tdls_action_frame(s
+       u8 *peer, *pos, *end;
+       u8 i, action, basic;
+       u16 cap = 0;
+-      int ie_len = 0;
++      int ies_len = 0;
+       if (len < (sizeof(struct ethhdr) + 3))
+               return;
+@@ -916,7 +916,7 @@ void mwifiex_process_tdls_action_frame(s
+               pos = buf + sizeof(struct ethhdr) + 4;
+               /* payload 1+ category 1 + action 1 + dialog 1 */
+               cap = get_unaligned_le16(pos);
+-              ie_len = len - sizeof(struct ethhdr) - TDLS_REQ_FIX_LEN;
++              ies_len = len - sizeof(struct ethhdr) - TDLS_REQ_FIX_LEN;
+               pos += 2;
+               break;
+@@ -926,7 +926,7 @@ void mwifiex_process_tdls_action_frame(s
+               /* payload 1+ category 1 + action 1 + dialog 1 + status code 2*/
+               pos = buf + sizeof(struct ethhdr) + 6;
+               cap = get_unaligned_le16(pos);
+-              ie_len = len - sizeof(struct ethhdr) - TDLS_RESP_FIX_LEN;
++              ies_len = len - sizeof(struct ethhdr) - TDLS_RESP_FIX_LEN;
+               pos += 2;
+               break;
+@@ -934,7 +934,7 @@ void mwifiex_process_tdls_action_frame(s
+               if (len < (sizeof(struct ethhdr) + TDLS_CONFIRM_FIX_LEN))
+                       return;
+               pos = buf + sizeof(struct ethhdr) + TDLS_CONFIRM_FIX_LEN;
+-              ie_len = len - sizeof(struct ethhdr) - TDLS_CONFIRM_FIX_LEN;
++              ies_len = len - sizeof(struct ethhdr) - TDLS_CONFIRM_FIX_LEN;
+               break;
+       default:
+               mwifiex_dbg(priv->adapter, ERROR, "Unknown TDLS frame type.\n");
+@@ -947,33 +947,33 @@ void mwifiex_process_tdls_action_frame(s
+       sta_ptr->tdls_cap.capab = cpu_to_le16(cap);
+-      for (end = pos + ie_len; pos + 1 < end; pos += 2 + pos[1]) {
+-              if (pos + 2 + pos[1] > end)
++      for (end = pos + ies_len; pos + 1 < end; pos += 2 + pos[1]) {
++              u8 ie_len = pos[1];
++
++              if (pos + 2 + ie_len > end)
+                       break;
+               switch (*pos) {
+               case WLAN_EID_SUPP_RATES:
+-                      if (pos[1] > 32)
++                      if (ie_len > sizeof(sta_ptr->tdls_cap.rates))
+                               return;
+-                      sta_ptr->tdls_cap.rates_len = pos[1];
+-                      for (i = 0; i < pos[1]; i++)
++                      sta_ptr->tdls_cap.rates_len = ie_len;
++                      for (i = 0; i < ie_len; i++)
+                               sta_ptr->tdls_cap.rates[i] = pos[i + 2];
+                       break;
+               case WLAN_EID_EXT_SUPP_RATES:
+-                      if (pos[1] > 32)
++                      if (ie_len > sizeof(sta_ptr->tdls_cap.rates))
+                               return;
+                       basic = sta_ptr->tdls_cap.rates_len;
+-                      if (pos[1] > 32 - basic)
++                      if (ie_len > sizeof(sta_ptr->tdls_cap.rates) - basic)
+                               return;
+-                      for (i = 0; i < pos[1]; i++)
++                      for (i = 0; i < ie_len; i++)
+                               sta_ptr->tdls_cap.rates[basic + i] = pos[i + 2];
+-                      sta_ptr->tdls_cap.rates_len += pos[1];
++                      sta_ptr->tdls_cap.rates_len += ie_len;
+                       break;
+               case WLAN_EID_HT_CAPABILITY:
+-                      if (pos > end - sizeof(struct ieee80211_ht_cap) - 2)
+-                              return;
+-                      if (pos[1] != sizeof(struct ieee80211_ht_cap))
++                      if (ie_len != sizeof(struct ieee80211_ht_cap))
+                               return;
+                       /* copy the ie's value into ht_capb*/
+                       memcpy((u8 *)&sta_ptr->tdls_cap.ht_capb, pos + 2,
+@@ -981,59 +981,45 @@ void mwifiex_process_tdls_action_frame(s
+                       sta_ptr->is_11n_enabled = 1;
+                       break;
+               case WLAN_EID_HT_OPERATION:
+-                      if (pos > end -
+-                          sizeof(struct ieee80211_ht_operation) - 2)
+-                              return;
+-                      if (pos[1] != sizeof(struct ieee80211_ht_operation))
++                      if (ie_len != sizeof(struct ieee80211_ht_operation))
+                               return;
+                       /* copy the ie's value into ht_oper*/
+                       memcpy(&sta_ptr->tdls_cap.ht_oper, pos + 2,
+                              sizeof(struct ieee80211_ht_operation));
+                       break;
+               case WLAN_EID_BSS_COEX_2040:
+-                      if (pos > end - 3)
+-                              return;
+-                      if (pos[1] != 1)
++                      if (ie_len != sizeof(pos[2]))
+                               return;
+                       sta_ptr->tdls_cap.coex_2040 = pos[2];
+                       break;
+               case WLAN_EID_EXT_CAPABILITY:
+-                      if (pos > end - sizeof(struct ieee_types_header))
+-                              return;
+-                      if (pos[1] < sizeof(struct ieee_types_header))
++                      if (ie_len < sizeof(struct ieee_types_header))
+                               return;
+-                      if (pos[1] > 8)
++                      if (ie_len > 8)
+                               return;
+                       memcpy((u8 *)&sta_ptr->tdls_cap.extcap, pos,
+                              sizeof(struct ieee_types_header) +
+-                             min_t(u8, pos[1], 8));
++                             min_t(u8, ie_len, 8));
+                       break;
+               case WLAN_EID_RSN:
+-                      if (pos > end - sizeof(struct ieee_types_header))
++                      if (ie_len < sizeof(struct ieee_types_header))
+                               return;
+-                      if (pos[1] < sizeof(struct ieee_types_header))
+-                              return;
+-                      if (pos[1] > IEEE_MAX_IE_SIZE -
++                      if (ie_len > IEEE_MAX_IE_SIZE -
+                           sizeof(struct ieee_types_header))
+                               return;
+                       memcpy((u8 *)&sta_ptr->tdls_cap.rsn_ie, pos,
+                              sizeof(struct ieee_types_header) +
+-                             min_t(u8, pos[1], IEEE_MAX_IE_SIZE -
++                             min_t(u8, ie_len, IEEE_MAX_IE_SIZE -
+                                    sizeof(struct ieee_types_header)));
+                       break;
+               case WLAN_EID_QOS_CAPA:
+-                      if (pos > end - 3)
+-                              return;
+-                      if (pos[1] != 1)
++                      if (ie_len != sizeof(pos[2]))
+                               return;
+                       sta_ptr->tdls_cap.qos_info = pos[2];
+                       break;
+               case WLAN_EID_VHT_OPERATION:
+                       if (priv->adapter->is_hw_11ac_capable) {
+-                              if (pos > end -
+-                                  sizeof(struct ieee80211_vht_operation) - 2)
+-                                      return;
+-                              if (pos[1] !=
++                              if (ie_len !=
+                                   sizeof(struct ieee80211_vht_operation))
+                                       return;
+                               /* copy the ie's value into vhtoper*/
+@@ -1043,10 +1029,7 @@ void mwifiex_process_tdls_action_frame(s
+                       break;
+               case WLAN_EID_VHT_CAPABILITY:
+                       if (priv->adapter->is_hw_11ac_capable) {
+-                              if (pos > end -
+-                                  sizeof(struct ieee80211_vht_cap) - 2)
+-                                      return;
+-                              if (pos[1] != sizeof(struct ieee80211_vht_cap))
++                              if (ie_len != sizeof(struct ieee80211_vht_cap))
+                                       return;
+                               /* copy the ie's value into vhtcap*/
+                               memcpy((u8 *)&sta_ptr->tdls_cap.vhtcap, pos + 2,
+@@ -1056,9 +1039,7 @@ void mwifiex_process_tdls_action_frame(s
+                       break;
+               case WLAN_EID_AID:
+                       if (priv->adapter->is_hw_11ac_capable) {
+-                              if (pos > end - 4)
+-                                      return;
+-                              if (pos[1] != 2)
++                              if (ie_len != sizeof(u16))
+                                       return;
+                               sta_ptr->tdls_cap.aid =
+                                       get_unaligned_le16((pos + 2));
diff --git a/queue-5.4/namei-only-return-echild-from-follow_dotdot_rcu.patch b/queue-5.4/namei-only-return-echild-from-follow_dotdot_rcu.patch
new file mode 100644 (file)
index 0000000..29a7927
--- /dev/null
@@ -0,0 +1,41 @@
+From 2b98149c2377bff12be5dd3ce02ae0506e2dd613 Mon Sep 17 00:00:00 2001
+From: Aleksa Sarai <cyphar@cyphar.com>
+Date: Sat, 7 Dec 2019 01:13:26 +1100
+Subject: namei: only return -ECHILD from follow_dotdot_rcu()
+
+From: Aleksa Sarai <cyphar@cyphar.com>
+
+commit 2b98149c2377bff12be5dd3ce02ae0506e2dd613 upstream.
+
+It's over-zealous to return hard errors under RCU-walk here, given that
+a REF-walk will be triggered for all other cases handling ".." under
+RCU.
+
+The original purpose of this check was to ensure that if a rename occurs
+such that a directory is moved outside of the bind-mount which the
+resolution started in, it would be detected and blocked to avoid being
+able to mess with paths outside of the bind-mount. However, triggering a
+new REF-walk is just as effective a solution.
+
+Cc: "Eric W. Biederman" <ebiederm@xmission.com>
+Fixes: 397d425dc26d ("vfs: Test for and handle paths that are unreachable from their mnt_root")
+Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/namei.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/namei.c
++++ b/fs/namei.c
+@@ -1360,7 +1360,7 @@ static int follow_dotdot_rcu(struct name
+                       nd->path.dentry = parent;
+                       nd->seq = seq;
+                       if (unlikely(!path_connected(&nd->path)))
+-                              return -ENOENT;
++                              return -ECHILD;
+                       break;
+               } else {
+                       struct mount *mnt = real_mount(nd->path.mnt);
diff --git a/queue-5.4/sched-fair-optimize-select_idle_cpu.patch b/queue-5.4/sched-fair-optimize-select_idle_cpu.patch
new file mode 100644 (file)
index 0000000..6718355
--- /dev/null
@@ -0,0 +1,62 @@
+From 60588bfa223ff675b95f866249f90616613fbe31 Mon Sep 17 00:00:00 2001
+From: Cheng Jian <cj.chengjian@huawei.com>
+Date: Fri, 13 Dec 2019 10:45:30 +0800
+Subject: sched/fair: Optimize select_idle_cpu
+
+From: Cheng Jian <cj.chengjian@huawei.com>
+
+commit 60588bfa223ff675b95f866249f90616613fbe31 upstream.
+
+select_idle_cpu() will scan the LLC domain for idle CPUs,
+it's always expensive. so the next commit :
+
+       1ad3aaf3fcd2 ("sched/core: Implement new approach to scale select_idle_cpu()")
+
+introduces a way to limit how many CPUs we scan.
+
+But it consume some CPUs out of 'nr' that are not allowed
+for the task and thus waste our attempts. The function
+always return nr_cpumask_bits, and we can't find a CPU
+which our task is allowed to run.
+
+Cpumask may be too big, similar to select_idle_core(), use
+per_cpu_ptr 'select_idle_mask' to prevent stack overflow.
+
+Fixes: 1ad3aaf3fcd2 ("sched/core: Implement new approach to scale select_idle_cpu()")
+Signed-off-by: Cheng Jian <cj.chengjian@huawei.com>
+Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Reviewed-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
+Reviewed-by: Vincent Guittot <vincent.guittot@linaro.org>
+Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
+Link: https://lkml.kernel.org/r/20191213024530.28052-1-cj.chengjian@huawei.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/sched/fair.c |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/kernel/sched/fair.c
++++ b/kernel/sched/fair.c
+@@ -5933,6 +5933,7 @@ static inline int select_idle_smt(struct
+  */
+ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int target)
+ {
++      struct cpumask *cpus = this_cpu_cpumask_var_ptr(select_idle_mask);
+       struct sched_domain *this_sd;
+       u64 avg_cost, avg_idle;
+       u64 time, cost;
+@@ -5964,11 +5965,11 @@ static int select_idle_cpu(struct task_s
+       time = cpu_clock(this);
+-      for_each_cpu_wrap(cpu, sched_domain_span(sd), target) {
++      cpumask_and(cpus, sched_domain_span(sd), p->cpus_ptr);
++
++      for_each_cpu_wrap(cpu, cpus, target) {
+               if (!--nr)
+                       return si_cpu;
+-              if (!cpumask_test_cpu(cpu, p->cpus_ptr))
+-                      continue;
+               if (available_idle_cpu(cpu))
+                       break;
+               if (si_cpu == -1 && sched_idle_cpu(cpu))
index e5ca97b8fabf297dc6e753615cdcc7c54a2a8ab2..392797946a718f082d978f64afde5be6858db074 100644 (file)
@@ -110,3 +110,13 @@ net-atlantic-fix-out-of-range-usage-of-active_vlans-array.patch
 net-smc-no-peer-id-in-clc-decline-for-smcd.patch
 net-ena-make-ena-rxfh-support-eth_rss_hash_no_change.patch
 selftests-install-settings-files-to-fix-timeout-failures.patch
+kbuild-remove-header-compile-test.patch
+kbuild-move-headers_check-rule-to-usr-include-makefile.patch
+kbuild-remove-unneeded-variable-single-all.patch
+kbuild-make-single-target-builds-even-faster.patch
+namei-only-return-echild-from-follow_dotdot_rcu.patch
+mwifiex-drop-most-magic-numbers-from-mwifiex_process_tdls_action_frame.patch
+mwifiex-delete-unused-mwifiex_get_intf_num.patch
+kvm-svm-override-default-mmio-mask-if-memory-encryption-is-enabled.patch
+kvm-check-for-a-bad-hva-before-dropping-into-the-ghc-slow-path.patch
+sched-fair-optimize-select_idle_cpu.patch