1. 15 1月, 2023 1 次提交
  2. 09 1月, 2023 1 次提交
  3. 05 1月, 2023 1 次提交
  4. 02 1月, 2023 1 次提交
  5. 30 12月, 2022 1 次提交
  6. 26 12月, 2022 1 次提交
  7. 14 12月, 2022 2 次提交
    • M
      kbuild: ensure Make >= 3.82 is used · 87d599fc
      Masahiro Yamada 提交于
      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: NMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: NNathan Chancellor <nathan@kernel.org>
      Reviewed-by: NNicolas Schier <nicolas@fjasle.eu>
      87d599fc
    • M
      kbuild: change module.order to list *.o instead of *.ko · f65a4868
      Masahiro Yamada 提交于
      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: NMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: NLuis Chamberlain <mcgrof@kernel.org>
      f65a4868
  8. 13 12月, 2022 2 次提交
  9. 12 12月, 2022 1 次提交
  10. 11 12月, 2022 1 次提交
  11. 10 12月, 2022 1 次提交
  12. 05 12月, 2022 1 次提交
  13. 28 11月, 2022 1 次提交
  14. 22 11月, 2022 1 次提交
  15. 21 11月, 2022 1 次提交
  16. 19 11月, 2022 2 次提交
  17. 18 11月, 2022 1 次提交
  18. 14 11月, 2022 1 次提交
  19. 10 11月, 2022 1 次提交
  20. 07 11月, 2022 1 次提交
  21. 02 11月, 2022 1 次提交
  22. 31 10月, 2022 1 次提交
  23. 28 10月, 2022 1 次提交
  24. 27 10月, 2022 1 次提交
  25. 24 10月, 2022 1 次提交
  26. 17 10月, 2022 3 次提交
  27. 04 10月, 2022 1 次提交
    • A
      kmsan: add KMSAN runtime core · f80be457
      Alexander Potapenko 提交于
      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.comSigned-off-by: NAlexander Potapenko <glider@google.com>
      Acked-by: NMarco 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: NAndrew Morton <akpm@linux-foundation.org>
      f80be457
  28. 03 10月, 2022 4 次提交
  29. 02 10月, 2022 2 次提交
    • M
      kbuild: remove head-y syntax · ce697cce
      Masahiro Yamada 提交于
      Kbuild puts the objects listed in head-y at the head of vmlinux.
      Conventionally, we do this for head*.S, which contains the kernel entry
      point.
      
      A counter approach is to control the section order by the linker script.
      Actually, the code marked as __HEAD goes into the ".head.text" section,
      which is placed before the normal ".text" section.
      
      I do not know if both of them are needed. From the build system
      perspective, head-y is not mandatory. If you can achieve the proper code
      placement by the linker script only, it would be cleaner.
      
      I collected the current head-y objects into head-object-list.txt. It is
      a whitelist. My hope is it will be reduced in the long run.
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      Tested-by: NNick Desaulniers <ndesaulniers@google.com>
      Reviewed-by: NNicolas Schier <nicolas@fjasle.eu>
      ce697cce
    • M
      kbuild: use obj-y instead extra-y for objects placed at the head · 32164845
      Masahiro Yamada 提交于
      The objects placed at the head of vmlinux need special treatments:
      
       - arch/$(SRCARCH)/Makefile adds them to head-y in order to place
         them before other archives in the linker command line.
      
       - arch/$(SRCARCH)/kernel/Makefile adds them to extra-y instead of
         obj-y to avoid them going into built-in.a.
      
      This commit gets rid of the latter.
      
      Create vmlinux.a to collect all the objects that are unconditionally
      linked to vmlinux. The objects listed in head-y are moved to the head
      of vmlinux.a by using 'ar m'.
      
      With this, arch/$(SRCARCH)/kernel/Makefile can consistently use obj-y
      for builtin objects.
      
      There is no *.o that is directly linked to vmlinux. Drop unneeded code
      in scripts/clang-tools/gen_compile_commands.py.
      
      $(AR) mPi needs 'T' to workaround the llvm-ar bug. The fix was suggested
      by Nathan Chancellor [1].
      
      [1]: https://lore.kernel.org/llvm/YyjjT5gQ2hGMH0ni@dev-arch.thelio-3990X/Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      Tested-by: NNick Desaulniers <ndesaulniers@google.com>
      Reviewed-by: NNicolas Schier <nicolas@fjasle.eu>
      32164845
  30. 30 9月, 2022 1 次提交
    • K
      hardening: Remove Clang's enable flag for -ftrivial-auto-var-init=zero · 607e57c6
      Kees Cook 提交于
      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: NKees Cook <keescook@chromium.org>
      607e57c6
  31. 29 9月, 2022 1 次提交
    • M
      kbuild: hide error checker logs for V=1 builds · 4b098659
      Masahiro Yamada 提交于
      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: NMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: NNick Desaulniers <ndesaulniers@google.com>
      Reviewed-by: NNicolas Schier <nicolas@fjasle.eu>
      4b098659