Skip to content
  1. Jan 08, 2023
  2. Jan 05, 2023
  3. Jan 01, 2023
  4. Dec 30, 2022
  5. Dec 25, 2022
  6. Dec 14, 2022
    • Masahiro Yamada's avatar
      kbuild: ensure Make >= 3.82 is used · 87d599fc
      Masahiro Yamada authored
      
      
      Documentation/process/changes.rst notes the minimal GNU Make version,
      but it is not checked anywhere.
      
      We could check $(MAKE_VERSION), but another simple way is to check
      $(.FEATURES) since the feature list always grows.
      
      GNU Make 3.81 expands $(.FEATURES) to:
        target-specific order-only second-expansion else-if archives jobserver check-symlink
      
      GNU Make 3.82 expands $(.FEATURES) to:
        target-specific order-only second-expansion else-if shortest-stem undefine archives jobserver check-symlink
      
      To ensure Make >= 3.82, you can check either 'shortest-stem' or
      'undefine'.
      
      This way is not always possible. For example, Make 4.0 through 4.2 have
      the same set of $(.FEATURES). At that point, we will need to come up
      with a different approach.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      87d599fc
    • Masahiro Yamada's avatar
      kbuild: change module.order to list *.o instead of *.ko · f65a4868
      Masahiro Yamada authored
      
      
      scripts/Makefile.build replaces the suffix .o with .ko, then
      scripts/Makefile.modpost calls the sed command to change .ko back
      to the original .o suffix.
      
      Instead of converting the suffixes back-and-forth, store the .o paths
      in modules.order, and replace it with .ko in 'make modules_install'.
      
      This avoids the unneeded sed command.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
      f65a4868
  7. Dec 13, 2022
  8. Dec 11, 2022
  9. Dec 10, 2022
  10. Dec 04, 2022
  11. Nov 27, 2022
  12. Nov 21, 2022
  13. Nov 18, 2022
  14. Nov 13, 2022
  15. Nov 09, 2022
  16. Nov 06, 2022
  17. Nov 01, 2022
  18. Oct 30, 2022
  19. Oct 28, 2022
  20. Oct 27, 2022
  21. Oct 23, 2022
  22. Oct 17, 2022
  23. Oct 16, 2022
  24. Oct 03, 2022
    • Alexander Potapenko's avatar
      kmsan: add KMSAN runtime core · f80be457
      Alexander Potapenko authored
      For each memory location KernelMemorySanitizer maintains two types of
      metadata:
      
      1. The so-called shadow of that location - а byte:byte mapping describing
         whether or not individual bits of memory are initialized (shadow is 0)
         or not (shadow is 1).
      2. The origins of that location - а 4-byte:4-byte mapping containing
         4-byte IDs of the stack traces where uninitialized values were
         created.
      
      Each struct page now contains pointers to two struct pages holding KMSAN
      metadata (shadow and origins) for the original struct page.  Utility
      routines in mm/kmsan/core.c and mm/kmsan/shadow.c handle the metadata
      creation, addressing, copying and checking.  mm/kmsan/report.c performs
      error reporting in the cases an uninitialized value is used in a way that
      leads to undefined behavior.
      
      KMSAN compiler instrumentation is responsible for tracking the metadata
      along with the kernel memory.  mm/kmsan/instrumentation.c provides the
      implementation for instrumentation hooks that are called from files
      compiled with -fsanitize=kernel-memory.
      
      To aid parameter passing (also done at instrumentation level), each
      task_struct now contains a struct kmsan_task_state used to track the
      metadata of function parameters and return values for that task.
      
      Finally, this patch provides CONFIG_KMSAN that enables KMSAN, and declares
      CFLAGS_KMSAN, which are applied to files compiled with KMSAN.  The
      KMSAN_SANITIZE:=n Makefile directive can be used to completely disable
      KMSAN instrumentation for certain files.
      
      Similarly, KMSAN_ENABLE_CHECKS:=n disables KMSAN checks and makes newly
      created stack memory initialized.
      
      Users can also use functions from include/linux/kmsan-checks.h to mark
      certain memory regions as uninitialized or initialized (this is called
      "poisoning" and "unpoisoning") or check that a particular region is
      initialized.
      
      Link: https://lkml.kernel.org/r/20220915150417.722975-12-glider@google.com
      
      
      Signed-off-by: default avatarAlexander Potapenko <glider@google.com>
      Acked-by: default avatarMarco Elver <elver@google.com>
      Cc: Alexander Viro <viro@zeniv.linux.org.uk>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Andrey Konovalov <andreyknvl@gmail.com>
      Cc: Andrey Konovalov <andreyknvl@google.com>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Cc: Eric Biggers <ebiggers@google.com>
      Cc: Eric Biggers <ebiggers@kernel.org>
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Cc: Ilya Leoshkevich <iii@linux.ibm.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Matthew Wilcox <willy@infradead.org>
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Cc: Pekka Enberg <penberg@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Petr Mladek <pmladek@suse.com>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vasily Gorbik <gor@linux.ibm.com>
      Cc: Vegard Nossum <vegard.nossum@oracle.com>
      Cc: Vlastimil Babka <vbabka@suse.cz>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      f80be457
  25. Oct 02, 2022
  26. Sep 30, 2022
    • Kees Cook's avatar
      hardening: Remove Clang's enable flag for -ftrivial-auto-var-init=zero · 607e57c6
      Kees Cook authored
      
      
      Now that Clang's -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang
      option is no longer required, remove it from the command line. Clang 16
      and later will warn when it is used, which will cause Kconfig to think
      it can't use -ftrivial-auto-var-init=zero at all. Check for whether it
      is required and only use it when so.
      
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Masahiro Yamada <masahiroy@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: linux-kbuild@vger.kernel.org
      Cc: llvm@lists.linux.dev
      Cc: stable@vger.kernel.org
      Fixes: f02003c8 ("hardening: Avoid harmless Clang option under CONFIG_INIT_STACK_ALL_ZERO")
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      607e57c6
  27. Sep 28, 2022
    • Masahiro Yamada's avatar
      kbuild: hide error checker logs for V=1 builds · 4b098659
      Masahiro Yamada authored
      
      
      V=1 (verbose build) shows commands executed by Make, but it may cause
      misunderstanding.
      
      For example, the following command shows the outstanding error message.
      
        $ make V=1 INSTALL_PATH=/tmp install
        test -e include/generated/autoconf.h -a -e include/config/auto.conf || (                \
        echo >&2;                                                       \
        echo >&2 "  ERROR: Kernel configuration is invalid.";           \
        echo >&2 "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
        echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to fix it.";      \
        echo >&2 ;                                                      \
        /bin/false)
          unset sub_make_done; ./scripts/install.sh
      
      It is not an error. Make just showed the recipe lines it has executed,
      but people may think that 'make install' has failed.
      
      Likewise, the combination of V=1 and O= shows confusing
      "*** The source tree is not clean, please run 'make mrproper'".
      
      Suppress such misleading logs.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      4b098659
    • Masahiro Yamada's avatar
      kbuild: unify two modpost invocations · f73edc89
      Masahiro Yamada authored
      
      
      Currently, modpost is executed twice; first for vmlinux, second
      for modules.
      
      This commit merges them.
      
      Current build flow
      ==================
      
        1) build obj-y and obj-m objects
          2) link vmlinux.o
            3) modpost for vmlinux
              4) link vmlinux
                5) modpost for modules
                  6) link modules (*.ko)
      
      The build steps 1) through 6) are serialized, that is, modules are
      built after vmlinux. You do not get benefits of parallel builds when
      scripts/link-vmlinux.sh is being run.
      
      New build flow
      ==============
      
        1) build obj-y and obj-m objects
          2) link vmlinux.o
            3) modpost for vmlinux and modules
              4a) link vmlinux
              4b) link modules (*.ko)
      
      In the new build flow, modpost is invoked just once.
      
      vmlinux and modules are built in parallel. One exception is
      CONFIG_DEBUG_INFO_BTF_MODULES=y, where modules depend on vmlinux.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Tested-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      f73edc89
Loading