Skip to content
Snippets Groups Projects
  1. Oct 01, 2023
  2. Sep 25, 2023
  3. Sep 20, 2023
    • Mark Rutland's avatar
      locking/atomic: scripts: fix fallback ifdeffery · 6d2779ec
      Mark Rutland authored
      
      Since commit:
      
        9257959a ("locking/atomic: scripts: restructure fallback ifdeffery")
      
      The ordering fallbacks for atomic*_read_acquire() and
      atomic*_set_release() erroneously fall back to the implictly relaxed
      atomic*_read() and atomic*_set() variants respectively, without any
      additional barriers. This loses the ACQUIRE and RELEASE ordering
      semantics, which can result in a wide variety of problems, even on
      strongly-ordered architectures where the implementation of
      atomic*_read() and/or atomic*_set() allows the compiler to reorder those
      relative to other accesses.
      
      In practice this has been observed to break bit spinlocks on arm64,
      resulting in dentry cache corruption.
      
      The fallback logic was intended to allow ACQUIRE/RELEASE/RELAXED ops to
      be defined in terms of FULL ops, but where an op had RELAXED ordering by
      default, this unintentionally permitted the ACQUIRE/RELEASE ops to be
      defined in terms of the implicitly RELAXED default.
      
      This patch corrects the logic to avoid falling back to implicitly
      RELAXED ops, resulting in the same behaviour as prior to commit
      9257959a.
      
      I've verified the resulting assembly on arm64 by generating outlined
      wrappers of the atomics. Prior to this patch the compiler generates
      sequences using relaxed load (LDR) and store (STR) instructions, e.g.
      
      | <outlined_atomic64_read_acquire>:
      |         ldr     x0, [x0]
      |         ret
      |
      | <outlined_atomic64_set_release>:
      |         str     x1, [x0]
      |         ret
      
      With this patch applied the compiler generates sequences using the
      intended load-acquire (LDAR) and store-release (STLR) instructions, e.g.
      
      | <outlined_atomic64_read_acquire>:
      |         ldar    x0, [x0]
      |         ret
      |
      | <outlined_atomic64_set_release>:
      |         stlr    x1, [x0]
      |         ret
      
      To make sure that there were no other victims of the ifdeffery rewrite,
      I generated outlined copies of all of the {atomic,atomic64,atomic_long}
      atomic operations before and after commit 9257959a. A diff of
      the generated assembly on arm64 shows that only the read_acquire() and
      set_release() operations were changed, and only lost their intended
      ordering:
      
      | [mark@lakrids:~/src/linux]% diff -u \
      | 	<(aarch64-linux-gnu-objdump -d before-9257959a.o)
      | 	<(aarch64-linux-gnu-objdump -d after-9257959a.o)
      | --- /proc/self/fd/11    2023-09-19 16:51:51.114779415 +0100
      | +++ /proc/self/fd/16    2023-09-19 16:51:51.114779415 +0100
      | @@ -1,5 +1,5 @@
      |
      | -before-9257959a.o:     file format elf64-littleaarch64
      | +after-9257959a.o:     file format elf64-littleaarch64
      |
      |
      |  Disassembly of section .text:
      | @@ -9,7 +9,7 @@
      |         4:      d65f03c0        ret
      |
      |  0000000000000008 <outlined_atomic_read_acquire>:
      | -       8:      88dffc00        ldar    w0, [x0]
      | +       8:      b9400000        ldr     w0, [x0]
      |         c:      d65f03c0        ret
      |
      |  0000000000000010 <outlined_atomic_set>:
      | @@ -17,7 +17,7 @@
      |        14:      d65f03c0        ret
      |
      |  0000000000000018 <outlined_atomic_set_release>:
      | -      18:      889ffc01        stlr    w1, [x0]
      | +      18:      b9000001        str     w1, [x0]
      |        1c:      d65f03c0        ret
      |
      |  0000000000000020 <outlined_atomic_add>:
      | @@ -1230,7 +1230,7 @@
      |      1070:      d65f03c0        ret
      |
      |  0000000000001074 <outlined_atomic64_read_acquire>:
      | -    1074:      c8dffc00        ldar    x0, [x0]
      | +    1074:      f9400000        ldr     x0, [x0]
      |      1078:      d65f03c0        ret
      |
      |  000000000000107c <outlined_atomic64_set>:
      | @@ -1238,7 +1238,7 @@
      |      1080:      d65f03c0        ret
      |
      |  0000000000001084 <outlined_atomic64_set_release>:
      | -    1084:      c89ffc01        stlr    x1, [x0]
      | +    1084:      f9000001        str     x1, [x0]
      |      1088:      d65f03c0        ret
      |
      |  000000000000108c <outlined_atomic64_add>:
      | @@ -2427,7 +2427,7 @@
      |      207c:      d65f03c0        ret
      |
      |  0000000000002080 <outlined_atomic_long_read_acquire>:
      | -    2080:      c8dffc00        ldar    x0, [x0]
      | +    2080:      f9400000        ldr     x0, [x0]
      |      2084:      d65f03c0        ret
      |
      |  0000000000002088 <outlined_atomic_long_set>:
      | @@ -2435,7 +2435,7 @@
      |      208c:      d65f03c0        ret
      |
      |  0000000000002090 <outlined_atomic_long_set_release>:
      | -    2090:      c89ffc01        stlr    x1, [x0]
      | +    2090:      f9000001        str     x1, [x0]
      |      2094:      d65f03c0        ret
      |
      |  0000000000002098 <outlined_atomic_long_add>:
      
      I've build tested this with a variety of configs for alpha, arm, arm64,
      csky, i386, m68k, microblaze, mips, nios2, openrisc, powerpc, riscv,
      s390, sh, sparc, x86_64, and xtensa, for which I've seen no issues. I
      was unable to build test for ia64 and parisc due to existing build
      breakage in v6.6-rc2.
      
      Fixes: 9257959a ("locking/atomic: scripts: restructure fallback ifdeffery")
      Reported-by: default avatarMing Lei <ming.lei@redhat.com>
      Reported-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Tested-by: default avatarBaokun Li <libaokun1@huawei.com>
      Link: https://lkml.kernel.org/r/20230919171430.2697727-1-mark.rutland@arm.com
      6d2779ec
  4. Sep 19, 2023
  5. Sep 14, 2023
  6. Sep 12, 2023
  7. Sep 06, 2023
  8. Sep 05, 2023
  9. Sep 03, 2023
  10. Sep 01, 2023
  11. Aug 31, 2023
  12. Aug 29, 2023
  13. Aug 21, 2023
    • Geert Uytterhoeven's avatar
      scripts/bloat-o-meter: count weak symbol sizes · 198430f7
      Geert Uytterhoeven authored
      Currently, bloat-o-meter does not take into account weak symbols, and
      thus ignores any size changes in code or data marked __weak.
      
      Fix this by handling weak code ("w"/"W") and data ("v"/"V").
      
      Link: https://lkml.kernel.org/r/a1e7abd2571c3bbfe75345d6ee98b276d2d5c39d.1692200010.git.geert+renesas@glider.be
      
      
      Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      198430f7
    • Kuan-Ying Lee's avatar
      scripts/gdb/vmalloc: add vmallocinfo support · 852622bf
      Kuan-Ying Lee authored
      This GDB script shows the vmallocinfo for user to
      analyze the vmalloc memory usage.
      
      Example output:
      0xffff800008000000-0xffff800008009000      36864 <start_kernel+372> pages=8 vmalloc
      0xffff800008009000-0xffff80000800b000       8192 <gicv2m_init_one+400> phys=0x8020000 ioremap
      0xffff80000800b000-0xffff80000800d000       8192 <bpf_prog_alloc_no_stats+72> pages=1 vmalloc
      0xffff80000800d000-0xffff80000800f000       8192 <bpf_jit_alloc_exec+16> pages=1 vmalloc
      0xffff800008010000-0xffff80000ad30000   47316992 <paging_init+452> phys=0x40210000 vmap
      0xffff80000ad30000-0xffff80000c1c0000   21561344 <paging_init+556> phys=0x42f30000 vmap
      0xffff80000c1c0000-0xffff80000c370000    1769472 <paging_init+592> phys=0x443c0000 vmap
      0xffff80000c370000-0xffff80000de90000   28442624 <paging_init+692> phys=0x44570000 vmap
      0xffff80000de90000-0xffff80000f4c1000   23269376 <paging_init+788> phys=0x46090000 vmap
      0xffff80000f4c1000-0xffff80000f4c3000       8192 <gen_pool_add_owner+112> pages=1 vmalloc
      0xffff80000f4c3000-0xffff80000f4c5000       8192 <gen_pool_add_owner+112> pages=1 vmalloc
      0xffff80000f4c5000-0xffff80000f4c7000       8192 <gen_pool_add_owner+112> pages=1 vmalloc
      
      Link: https://lkml.kernel.org/r/20230808083020.22254-9-Kuan-Ying.Lee@mediatek.com
      
      
      Signed-off-by: default avatarKuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
      Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Cc: Chinwen Chang <chinwen.chang@mediatek.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      852622bf
    • Kuan-Ying Lee's avatar
      scripts/gdb/slab: add slab support · 79939c4a
      Kuan-Ying Lee authored
      Add 'lx-slabinfo' and 'lx-slabtrace' support.
      
      This GDB scripts print slabinfo and slabtrace for user
      to analyze slab memory usage.
      
      Example output like below:
      (gdb) lx-slabinfo
           Pointer       |         name         | active_objs  |   num_objs   | objsize  | objperslab  | pagesperslab
      ------------------ | -------------------- | ------------ | ------------ | -------- | ----------- | -------------
      0xffff0000c59df480 | p9_req_t             | 0            | 0            | 280      | 29          | 2
      0xffff0000c59df280 | isp1760_qh           | 0            | 0            | 160      | 25          | 1
      0xffff0000c59df080 | isp1760_qtd          | 0            | 0            | 184      | 22          | 1
      0xffff0000c59dee80 | isp1760_urb_listite  | 0            | 0            | 136      | 30          | 1
      0xffff0000c59dec80 | asd_sas_event        | 0            | 0            | 256      | 32          | 2
      0xffff0000c59dea80 | sas_task             | 0            | 0            | 448      | 36          | 4
      0xffff0000c59de880 | bio-120              | 18           | 21           | 384      | 21          | 2
      0xffff0000c59de680 | io_kiocb             | 0            | 0            | 448      | 36          | 4
      0xffff0000c59de480 | bfq_io_cq            | 0            | 0            | 1504     | 21          | 8
      0xffff0000c59de280 | bfq_queue            | 0            | 0            | 720      | 22          | 4
      0xffff0000c59de080 | mqueue_inode_cache   | 1            | 28           | 1152     | 28          | 8
      0xffff0000c59dde80 | v9fs_inode_cache     | 0            | 0            | 832      | 39          | 8
      ...
      
      (gdb) lx-slabtrace --cache_name kmalloc-1k
      63 <tty_register_device_attr+508> waste=16632/264 age=46856/46871/46888 pid=1 cpus=6,
         0xffff800008720240 <__kmem_cache_alloc_node+236>:    mov     x22, x0
         0xffff80000862a4fc <kmalloc_trace+64>:       mov     x21, x0
         0xffff8000095d086c <tty_register_device_attr+508>:   mov     x19, x0
         0xffff8000095d0f98 <tty_register_driver+704>:        cmn     x0, #0x1, lsl #12
         0xffff80000c2677e8 <vty_init+620>:   Cannot access memory at address 0xffff80000c2677e8
         0xffff80000c265a10 <tty_init+276>:   Cannot access memory at address 0xffff80000c265a10
         0xffff80000c26d3c4 <chr_dev_init+204>:       Cannot access memory at address 0xffff80000c26d3c4
         0xffff8000080161d4 <do_one_initcall+176>:    mov     w21, w0
         0xffff80000c1c1b58 <kernel_init_freeable+956>:       Cannot access memory at address 0xffff80000c1c1b58
         0xffff80000acf1334 <kernel_init+36>: bl      0xffff8000081ac040 <async_synchronize_full>
         0xffff800008018d00 <ret_from_fork+16>:       mrs     x28, sp_el0
      
      (gdb) lx-slabtrace --cache_name kmalloc-1k --free
      428 <not-available> age=4294958600 pid=0 cpus=0,
      
      Link: https://lkml.kernel.org/r/20230808083020.22254-8-Kuan-Ying.Lee@mediatek.com
      
      
      Signed-off-by: default avatarKuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
      Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Cc: Chinwen Chang <chinwen.chang@mediatek.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      79939c4a
    • Kuan-Ying Lee's avatar
      scripts/gdb/page_owner: add page owner support · 2f060190
      Kuan-Ying Lee authored
      This GDB script prints page owner information for user to analyze the
      memory usage or memory corruption issue.
      
      Example output from an aarch64 system:
      
      (gdb) lx-dump-page-owner --pfn 655360
      page_owner tracks the page as allocated
      Page last allocated via order 0, gfp_mask: 0x8, pid: 1, tgid: 1 ("swapper/0\000\000\000\000\000\000"), ts 1295948880 ns, free_ts 1011852016 ns
      PFN: 655360, Flags: 0x3fffc0000000000
         0xffff8000086ab964 <post_alloc_hook+452>:    ldp     x19, x20, [sp, #16]
         0xffff80000862e4e0 <split_map_pages+344>:    cbnz    w22, 0xffff80000862e57c <split_map_pages+500>
         0xffff8000086370c4 <isolate_freepages_range+556>:    mov     x0, x27
         0xffff8000086bc1cc <alloc_contig_range+808>: mov     x24, x0
         0xffff80000877d6d8 <cma_alloc+772>:  mov     w1, w0
         0xffff8000082c8d18 <dma_alloc_from_contiguous+104>:  ldr     x19, [sp, #16]
         0xffff8000082ce0e8 <atomic_pool_expand+208>: mov     x19, x0
         0xffff80000c1e41b4 <__dma_atomic_pool_init+172>:     Cannot access memory at address 0xffff80000c1e41b4
         0xffff80000c1e4298 <dma_atomic_pool_init+92>:        Cannot access memory at address 0xffff80000c1e4298
         0xffff8000080161d4 <do_one_initcall+176>:    mov     w21, w0
         0xffff80000c1c1b50 <kernel_init_freeable+952>:       Cannot access memory at address 0xffff80000c1c1b50
         0xffff80000acf87dc <kernel_init+36>: bl      0xffff8000081ab100 <async_synchronize_full>
         0xffff800008018d00 <ret_from_fork+16>:       mrs     x28, sp_el0
      page last free stack trace:
         0xffff8000086a6e8c <free_unref_page_prepare+796>:    mov     w2, w23
         0xffff8000086aee1c <free_unref_page+96>:     tst     w0, #0xff
         0xffff8000086af3f8 <__free_pages+292>:       ldp     x19, x20, [sp, #16]
         0xffff80000c1f3214 <init_cma_reserved_pageblock+220>:        Cannot access memory at address 0xffff80000c1f3214
         0xffff80000c20363c <cma_init_reserved_areas+1284>:   Cannot access memory at address 0xffff80000c20363c
         0xffff8000080161d4 <do_one_initcall+176>:    mov     w21, w0
         0xffff80000c1c1b50 <kernel_init_freeable+952>:       Cannot access memory at address 0xffff80000c1c1b50
         0xffff80000acf87dc <kernel_init+36>: bl      0xffff8000081ab100 <async_synchronize_full>
         0xffff800008018d00 <ret_from_fork+16>:       mrs     x28, sp_el0
      
      Link: https://lkml.kernel.org/r/20230808083020.22254-7-Kuan-Ying.Lee@mediatek.com
      
      
      Signed-off-by: default avatarKuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
      Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Cc: Chinwen Chang <chinwen.chang@mediatek.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      2f060190
    • Kuan-Ying Lee's avatar
      scripts/gdb/stackdepot: add stackdepot support · 0e1b240a
      Kuan-Ying Lee authored
      Add support for printing the backtrace of stackdepot handle.
      
      This is the preparation patch for dumping page_owner,
      slabtrace usage.
      
      Link: https://lkml.kernel.org/r/20230808083020.22254-6-Kuan-Ying.Lee@mediatek.com
      
      
      Signed-off-by: default avatarKuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
      Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Cc: Chinwen Chang <chinwen.chang@mediatek.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      0e1b240a
    • Kuan-Ying Lee's avatar
      scripts/gdb/aarch64: add aarch64 page operation helper commands and configs · eb985b5d
      Kuan-Ying Lee authored
      1. Move page table debugging from mm.py to pgtable.py.
      
      2. Add aarch64 kernel config and memory constants value.
      
      3. Add below aarch64 page operation helper commands.
         page_to_pfn, page_to_phys, pfn_to_page, page_address,
         virt_to_phys, sym_to_pfn, pfn_to_kaddr, virt_to_page.
      
      4. Only support CONFIG_SPARSEMEM_VMEMMAP=y now.
      
      Link: https://lkml.kernel.org/r/20230808083020.22254-5-Kuan-Ying.Lee@mediatek.com
      
      
      Signed-off-by: default avatarKuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
      Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Cc: Chinwen Chang <chinwen.chang@mediatek.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      eb985b5d
    • Kuan-Ying Lee's avatar
      scripts/gdb/utils: add common type usage · 4d040cbc
      Kuan-Ying Lee authored
      Since we often use 'unsigned long', 'size_t', 'usigned int'
      and 'struct page', we add these common types to utils.
      
      Link: https://lkml.kernel.org/r/20230808083020.22254-4-Kuan-Ying.Lee@mediatek.com
      
      
      Signed-off-by: default avatarKuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
      Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Cc: Chinwen Chang <chinwen.chang@mediatek.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      4d040cbc
    • Kuan-Ying Lee's avatar
      scripts/gdb/modules: add get module text support · 82141540
      Kuan-Ying Lee authored
      When we get an text address from coredump and we cannot find
      this address in vmlinux, it might located in kernel module.
      
      We want to know which kernel module it located in.
      
      This GDB scripts can help us to find the target kernel module.
      
      (gdb) lx-getmod-by-textaddr 0xffff800002d305ac
      0xffff800002d305ac is in kasan_test.ko
      
      Link: https://lkml.kernel.org/r/20230808083020.22254-3-Kuan-Ying.Lee@mediatek.com
      
      
      Signed-off-by: default avatarKuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
      Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Cc: Chinwen Chang <chinwen.chang@mediatek.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      82141540
    • Kuan-Ying Lee's avatar
      scripts/gdb/symbols: add specific ko module load command · 11f95653
      Kuan-Ying Lee authored
      Patch series "Add GDB memory helper commands", v2.
      
      I've created some GDB commands I think useful when I debug some memory
      issues and kernel module issue.
      
      For memory issue, we would like to get slabinfo, slabtrace, page_owner and
      vmallocinfo to debug the memory issues.
      
      For module issue, we would like to query kernel module name when we get a
      module text address and load module symbol by specific path.
      
      Patch 1-2:
       - Add kernel module related command.
      Patch 3-5:
       - Prepares for the memory-related command.
      Patch 6-8:
       - Add memory-related commands.
      
      
      This patch (of 8):
      
      Add lx-symbols <ko_path> command to support add specific
      ko module.
      
      Example output like below:
      (gdb) lx-symbols mm/kasan/kasan_test.ko
      loading @0xffff800002d30000: mm/kasan/kasan_test.ko
      
      Link: https://lkml.kernel.org/r/20230808083020.22254-1-Kuan-Ying.Lee@mediatek.com
      Link: https://lkml.kernel.org/r/20230808083020.22254-2-Kuan-Ying.Lee@mediatek.com
      
      
      Signed-off-by: default avatarKuan-Ying Lee <Kuan-Ying.Lee@mediatek.com>
      Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Cc: Chinwen Chang <chinwen.chang@mediatek.com>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Cc: Qun-Wei Lin <qun-wei.lin@mediatek.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      11f95653
    • Jim Cromie's avatar
      checkpatch: reword long-line warning about commit-msg · 8e7b7ffb
      Jim Cromie authored
      Reword the warning to complain about line length 1st, since thats
      whats actually tested.
      
      Link: https://lkml.kernel.org/r/20230808033019.21911-3-jim.cromie@gmail.com
      
      
      Cc: apw@canonical.com
      Cc: joe@perches.com
      Signed-off-by: default avatarJim Cromie <jim.cromie@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      8e7b7ffb
    • Jim Cromie's avatar
      checkpatch: special case extern struct in .c · 5b2c7334
      Jim Cromie authored
      "externs should be avoided in .c files" needs an exception for linker
      symbols, like those that mark the start, stop of many kernel sections.
      
      Since checkpatch already checks REALNAME to avoid looking at fragments
      changing vmlinux.lds.h, add a new else-if block to look at them
      instead.  As a simple heuristic, treat all words (in the patch-line)
      as possible symbols, to screen later warnings.
      
      For my test case, the possible-symbols included BOUNDED_BY (a macro),
      which is extra, but not troublesome - these are just to screen
      WARNINGS that might be issued on later fragments (changing .c files)
      
      Where the WARN is issued, precede it with an else-if block to catch
      one common extern-in-c use case: "extern struct foo bar[]".  Here we
      can at least issue a softer warning, after checking for a match with a
      maybe-linker-symbol parsed earlier from the patch.
      
      Though heuristic, it worked for my test-case, allowing both start__,
      stop__ $symbol's (wo the prefixes specifically named).  I've coded it
      narrowly, it can be expanded later to cover any other expressions.
      
      It does require that the externs in .c's have the additions to
      vmlinux.lds.h in the same patch.  And requires vmlinux.lds.h before .c
      fragments.
      
      Link: https://lkml.kernel.org/r/20230808033019.21911-2-jim.cromie@gmail.com
      
      
      Signed-off-by: default avatarJim Cromie <jim.cromie@gmail.com>
      Cc: Joe Perches <joe@perches.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      5b2c7334
  14. Aug 20, 2023
  15. Aug 18, 2023
Loading