1. 22 11月, 2022 1 次提交
  2. 21 11月, 2022 8 次提交
  3. 17 11月, 2022 1 次提交
    • M
      kbuild: Restore .version auto-increment behaviour for Debian packages · 5db8face
      Marc Zyngier 提交于
      Since 2df8220c ("kbuild: build init/built-in.a just once"),
      generating Debian packages using 'make bindeb-pkg' results in
      packages that are stuck to the same .version, leading to unexpected
      behaviours (multiple packages with the same version).
      
      That's because the mkdebian script samples the build version
      before building the kernel, and forces the use of that version
      number for the actual build.
      
      Restore the previous behaviour by calling init/build-version
      instead of reading the .version file. This is likely to result
      in too many .version bumps, but this is what was happening before
      (although the bump was affecting builds made after the current one).
      
      Fixes: 2df8220c ("kbuild: build init/built-in.a just once")
      Signed-off-by: NMarc Zyngier <maz@kernel.org>
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      5db8face
  4. 10 11月, 2022 1 次提交
  5. 02 11月, 2022 1 次提交
    • M
      kconfig: fix segmentation fault in menuconfig search · 7a263a04
      Masahiro Yamada 提交于
      Since commit d05377e1 ("kconfig: Create links to main menu items
      in search"), menuconfig shows a jump key next to "Main menu" if the
      nearest visible parent is the rootmenu. If you press that jump key,
      menuconfig crashes with a segmentation fault.
      
      For example, do this:
      
        $ make ARCH=arm64 allnoconfig menuconfig
      
      Press '/' to search for the string "ACPI". Press '1' to choose
      "(1) Main menu". Then, menuconfig crashed with a segmentation fault.
      
      The following code in search_conf()
      
          conf(targets[i]->parent, targets[i]);
      
      results in NULL pointer dereference because targets[i] is the rootmenu,
      which does not have a parent.
      
      Commit d05377e1 tried to fix the issue of top-level items not having
      a jump key, but adding the "Main menu" was not the right fix.
      
      The correct fix is to show the searched item itself. This fixes another
      weird behavior described in the comment block.
      
      Fixes: d05377e1 ("kconfig: Create links to main menu items in search")
      Reported-by: NJohannes Zink <j.zink@pengutronix.de>
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      Tested-by: NBagas Sanjaya <bagasdotme@gmail.com>
      Tested-by: NJohannes Zink <j.zink@pengutronix.de>
      7a263a04
  6. 27 10月, 2022 1 次提交
  7. 15 10月, 2022 1 次提交
    • N
      kbuild: add -fno-discard-value-names to cmd_cc_ll_c · c67a85be
      Nick Desaulniers 提交于
      When debugging LLVM IR, it can be handy for clang to not discard value
      names used for local variables and parameters. Compare the generated IR.
      
      -fdiscard-value-names:
        define i32 @core_sys_select(i32 %0, ptr %1, ptr %2, ptr %3, ptr %4) {
          %6 = alloca i64
          %7 = alloca %struct.poll_wqueues
          %8 = alloca [64 x i32]
      
      -fno-discard-value-names:
        define i32 @core_sys_select(i32 %n, ptr %inp, ptr %outp, ptr %exp,
                                    ptr %end_time) {
          %expire.i = alloca i64
          %table.i = alloca %struct.poll_wqueues
          %stack_fds = alloca [64 x i32]
      
      The rule for generating human readable LLVM IR (.ll) is only useful as a
      debugging feature:
      
      $ make LLVM=1 fs/select.ll
      
      As Fangrui notes:
        A LLVM_ENABLE_ASSERTIONS=off build of Clang defaults to
        -fdiscard-value-names.
      
        A LLVM_ENABLE_ASSERTIONS=on build of Clang defaults to
        -fno-discard-value-names.
      
      Explicitly enable -fno-discard-value-names so that the IR always contains
      value names regardless of whether assertions were enabled or not.
      Assertions generally are not enabled in releases of clang packaged by
      distributions.
      
      Link: https://github.com/ClangBuiltLinux/linux/issues/1467Reviewed-by: NNathan Chancellor <nathan@kernel.org>
      Reviewed-by: NFangrui Song <maskray@google.com>
      Signed-off-by: NNick Desaulniers <ndesaulniers@google.com>
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      c67a85be
  8. 14 10月, 2022 2 次提交
  9. 13 10月, 2022 1 次提交
    • Z
      kbuild: Stop including vmlinux.bz2 in the rpm's · fc8c2d8f
      Zack Rusin 提交于
      vmlinux.bz2 was added to the rpm packages in 2009 in the
      fc370ecf ("kbuild: add vmlinux to kernel rpm") but seemingly hasn't
      been used since.
      
      Originally this should have been split up in a seperate debugging
      package because it massively increases the size of the generated rpm's
      e.g. kernel rpm built using binrpm-pkg on Fedora 36 default 5.19.8 kernel
      config and localmodconfig is ~255MB with vmlinux.bz2 and only ~65MB
      without it.
      
      Make the kernel built rpms about 4x smaller by not including the unused
      vmlinux.bz2 in them.
      Signed-off-by: NZack Rusin <zackr@vmware.com>
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      fc8c2d8f
  10. 04 10月, 2022 2 次提交
    • N
    • 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
  11. 03 10月, 2022 3 次提交
    • M
      kbuild: rebuild .vmlinux.export.o when its prerequisite is updated · 5d4aeffb
      Masahiro Yamada 提交于
      When include/linux/export-internal.h is updated, .vmlinux.export.o
      must be rebuilt, but it does not happen because its rule is hidden
      behind scripts/link-vmlinux.sh.
      
      Move it out of the shell script, so that Make can see the dependency
      between vmlinux and .vmlinux.export.o.
      
      Move the vmlinux rule to scripts/Makefile.vmlinux.
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      5d4aeffb
    • M
      kbuild: move modules.builtin(.modinfo) rules to Makefile.vmlinux_o · 7a342e6c
      Masahiro Yamada 提交于
      Do not build modules.builtin(.modinfo) as a side-effect of vmlinux.
      
      There are no good reason to rebuild them just because any of vmlinux's
      prerequistes (vmlinux.lds, .vmlinux.export.c, etc.) has been updated.
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      7a342e6c
    • M
      kallsyms: ignore __kstrtab_* and __kstrtabns_* symbols · d32b55f4
      Masahiro Yamada 提交于
      Every EXPORT_SYMBOL creates __kstrtab_* and __kstrtabns_*, which
      consumes 15-20% of the kallsyms entries.
      
      For example, on the system built from the x86_64 defconfig,
      
        $ cat /proc/kallsyms | wc
           129527    388581   5685465
        $ cat /proc/kallsyms | grep __kstrtab | wc
            23489     70467   1187932
      
      We already ignore __crc_* symbols populated by EXPORT_SYMBOL, so it
      should be fine to ignore __kstrtab_* and __kstrtabns_* as well.
      
      This makes vmlinux a bit smaller.
      
        $ size vmlinux.before vmlinux.after
           text    data     bss     dec     hex filename
        22785374        8559694 1413328 32758396        1f3da7c vmlinux.before
        22785374        8137806 1413328 32336508        1ed6a7c vmlinux.after
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      d32b55f4
  12. 02 10月, 2022 6 次提交
  13. 01 10月, 2022 1 次提交
  14. 30 9月, 2022 2 次提交
  15. 29 9月, 2022 9 次提交