Andrii Nakryiko
df7bdcc9f7
BACKPORT: kbuild: add ability to generate BTF type info for vmlinux
...
This patch adds new config option to trigger generation of BTF type
information from DWARF debuginfo for vmlinux and kernel modules through
pahole, which in turn relies on libbpf for btf_dedup() algorithm.
The intent is to record compact type information of all types used
inside kernel, including all the structs/unions/typedefs/etc. This
enables BPF's compile-once-run-everywhere ([0]) approach, in which
tracing programs that are inspecting kernel's internal data (e.g.,
struct task_struct) can be compiled on a system running some kernel
version, but would be possible to run on other kernel versions (and
configurations) without recompilation, even if the layout of structs
changed and/or some of the fields were added, removed, or renamed.
This is only possible if BPF loader can get kernel type info to adjust
all the offsets correctly. This patch is a first time in this direction,
making sure that BTF type info is part of Linux kernel image in
non-loadable ELF section.
BTF deduplication ([1]) algorithm typically provides 100x savings
compared to DWARF data, so resulting .BTF section is not big as is
typically about 2MB in size.
[0] http://vger.kernel.org/lpc-bpf2018.html#session-2
[1] https://facebookmicrosites.github.io/bpf/blog/2018/11/14/btf-enhancement.html
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Alexei Starovoitov <ast@fb.com>
Cc: Yonghong Song <yhs@fb.com>
Cc: Martin KaFai Lau <kafai@fb.com>
Change-Id: Id935f6e3ac658d9a92d55acd39e8287c644c941d
Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Acked-by: David S. Miller <davem@davemloft.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Sorayukii <sorayukii69@gmail.com>
2026-05-15 17:58:04 +07:00
..
842
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2016-03-17 21:38:27 -07:00
crypto
lib/crypto: blake2s: move hmac construction into wireguard
2022-06-25 11:45:02 +02:00
fonts
Fonts: Replace discarded const qualifier
2020-11-10 10:24:02 +01:00
lz4
lz4: fix bogus gcc warning
2017-09-02 07:07:54 +02:00
lzo
mpi
Merge branch 'android-4.9-q' of https://android.googlesource.com/kernel/common into HEAD
2020-06-30 02:33:58 +03:00
raid6
lib/raid6/test: fix multiple definition linking error
2022-04-20 09:06:30 +02:00
reed_solomon
rslib: Fix handling of of caller provided syndrome
2019-08-04 09:33:23 +02:00
vdso
ANDROID: clock_gettime(CLOCK_BOOTTIME,) slows down >20x
2020-06-30 02:50:11 +03:00
xz
lib/xz: Validate the value before assigning it to an enum variable
2021-11-26 11:48:30 +01:00
zlib_deflate
zlib_deflate/deftree: remove bi_reverse()
2015-09-10 13:29:01 -07:00
zlib_inflate
lib/zlib: remove outdated and incorrect pre-increment optimization
2020-06-30 15:38:29 -04:00
zstd
UPSTREAM: lib: Add zstd modules
2018-08-23 12:05:06 -07:00
.gitignore
argv_split.c
asn1_decoder.c
ASN.1: check for error from ASN1_OP_END__ACT actions
2017-12-14 09:28:12 +01:00
assoc_array.c
assoc_array: Fix BUG_ON during garbage collect
2022-06-06 08:19:46 +02:00
atomic64.c
locking/atomic: Implement atomic{,64,_long}_fetch_{add,sub,and,andnot,or,xor}{,_relaxed,_acquire,_release}()
2016-06-16 10:48:32 +02:00
atomic64_test.c
atomic64: no need for CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
2016-10-07 18:46:30 -07:00
audit.c
bcd.c
bch.c
bitmap.c
bitmap: Add bitmap_alloc(), bitmap_zalloc() and bitmap_free()
2020-01-29 10:24:41 +01:00
bitrev.c
bsearch.c
kprobes: Prohibit probing on bsearch()
2019-04-05 22:29:11 +02:00
btree.c
treewide: Remove old email address
2015-11-23 09:44:58 +01:00
bug.c
UPSTREAM: bug: use %pB in BUG and stack protector failure
2019-03-28 21:13:06 -07:00
build_OID_registry
bust_spinlocks.c
chacha.c
BACKPORT, FROMGIT: crypto: chacha - add XChaCha12 support
2018-12-13 09:34:58 -08:00
check_signature.c
checksum.c
ipv4: Update parameters for csum_tcpudp_magic to their original types
2016-03-13 23:55:13 -04:00
clz_ctz.c
clz_tab.c
cmdline.c
lib/cmdline.c: fix get_options() overflow while parsing ranges
2017-06-29 13:00:28 +02:00
compat_audit.c
cordic.c
cpu-notifier-error-inject.c
fault-injection/cpu: Convert to hotplug state machine
2016-09-19 21:44:31 +02:00
cpu_rmap.c
cpumask.c
sched/fair, cpumask: Export for_each_cpu_wrap()
2017-07-21 07:42:23 +02:00
crc-ccitt.c
crc-itu-t.c
crc-t10dif.c
crc7.c
crc8.c
crc16.c
crc32.c
lib/crc32.c: fix trivial typo in preprocessor condition
2020-10-29 09:05:39 +01:00
crc32defs.h
ctype.c
debug_info.c
debug_locks.c
locking/lockdep: Fix debug_locks off performance problem
2018-11-13 11:16:48 -08:00
debugobjects.c
debugobjects: avoid recursive calls with kmemleak
2018-12-17 09:38:35 +01:00
dec_and_lock.c
decompress.c
decompress_bunzip2.c
lib/decompressors: use real out buf size for gunzip with kernel
2015-09-10 13:29:01 -07:00
decompress_inflate.c
lib/decompressors: use real out buf size for gunzip with kernel
2015-09-10 13:29:01 -07:00
decompress_unlz4.c
lib/decompress_unlz4.c: correctly handle zero-padding around initrds.
2021-07-20 16:21:12 +02:00
decompress_unlzma.c
lib/decompress_unlzma: Do a NULL check for pointer
2015-09-10 13:29:01 -07:00
decompress_unlzo.c
lib/decompressors: use real out buf size for gunzip with kernel
2015-09-10 13:29:01 -07:00
decompress_unxz.c
lib/xz: Avoid overlapping memcpy() with invalid input with in-place decompression
2021-11-26 11:48:30 +01:00
devres.c
devres: allow const resource arguments
2020-01-29 10:24:28 +01:00
digsig.c
This is the 4.9.59 stable release
2017-10-30 09:27:09 +01:00
div64.c
lib/div64.c: off by one in shift
2019-04-20 09:07:54 +02:00
dma-debug.c
dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC
2022-06-14 16:52:29 +02:00
dma-noop.c
dma-mapping: use unsigned long for dma_attrs
2016-08-04 08:50:07 -04:00
dump_stack.c
dump_stack: avoid the livelock of the dump_lock
2019-11-12 19:15:43 +01:00
dynamic_debug.c
dyndbg: let query-modname override actual module name
2022-10-26 13:15:43 +02:00
dynamic_queue_limits.c
earlycpio.c
lib/cpio: Make find_cpio_data()'s offset arg optional
2016-06-08 11:04:19 +02:00
error-inject.c
BACKPORT: error-injection: Separate error-injection from kprobe
2026-05-15 17:56:33 +07:00
extable.c
extable: add support for relative extables to search and sort routines
2016-02-24 14:57:26 +00:00
fault-inject.c
fault-inject: fix inverted interval/probability values in printk
2015-10-23 17:55:10 +09:00
fdt.c
fdt_empty_tree.c
fdt_ro.c
fdt_rw.c
fdt_strerror.c
fdt_sw.c
fdt_wip.c
find_bit.c
uapi: rename ext2_swab() to swab() and share globally in swab.h
2022-06-25 11:45:14 +02:00
flex_array.c
flex_proportions.c
lib+mm: fix few spelling mistakes
2016-02-15 11:18:23 +01:00
gcd.c
lib/GCD.c: use binary GCD algorithm instead of Euclidean
2016-05-20 17:58:30 -07:00
gen_crc32table.c
genalloc.c
lib/genalloc: fix the overflow when size is too big
2021-01-12 19:49:01 +01:00
glob.c
halfmd4.c
lib/halfmd4.c: use rol32 inline function in the ROUND macro
2015-11-06 17:50:42 -08:00
hexdump.c
hex2bin: fix access beyond string end
2022-05-12 12:14:54 +02:00
hweight.c
x86/hweight: Get rid of the special calling convention
2016-06-08 15:01:02 +02:00
idr.c
ida: don't use BUG_ON() for debugging
2022-07-12 16:26:25 +02:00
inflate.c
int_sqrt.c
lib/int_sqrt: optimize initial value compute
2019-04-05 22:29:04 +02:00
interval_tree.c
interval_tree_test.c
lib/interval_tree_test.c: allow users to limit scope of endpoint
2018-12-21 14:11:30 +01:00
iomap.c
lib: iomap: Add MSM RTB support
2016-09-26 15:03:43 -07:00
iomap_copy.c
lib/iomap_copy.c: add __ioread32_copy()
2016-01-20 17:09:18 -08:00
iommu-common.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
2015-11-05 16:34:48 -08:00
iommu-helper.c
lib/iommu-helper: skip to next segment
2016-08-02 19:35:07 -04:00
ioremap.c
ioremap: Update pgtable free interfaces with addr
2018-08-17 20:59:29 +02:00
iov_iter.c
lib/iov_iter: initialize "flags" in new pipe_buffer
2022-02-23 11:56:41 +01:00
irq_poll.c
This adds a new gcc plugin named "latent_entropy". It is designed to
2016-10-15 10:03:15 -07:00
irq_regs.c
is_single_threaded.c
lib/is_single_threaded.c: change current_is_single_threaded() to use for_each_thread()
2015-11-06 17:50:42 -08:00
jedec_ddr_data.c
kasprintf.c
lib/kasprintf.c: add sanity check to kvasprintf
2016-01-16 11:17:27 -08:00
Kconfig
Merge remote-tracking branch 'common/android-4.9-q' into android12-4.9-sdm845
2022-03-31 22:52:51 +03:00
Kconfig.debug
BACKPORT: kbuild: add ability to generate BTF type info for vmlinux
2026-05-15 17:58:04 +07:00
Kconfig.kasan
mm, kasan: switch SLUB to stackdepot, enable memory quarantine for SLUB
2016-07-28 16:07:41 -07:00
Kconfig.kgdb
kgdb: depends on VT
2016-05-23 17:04:14 -07:00
Kconfig.kmemcheck
Kconfig.ubsan
ubsan: allow to disable the null sanitizer
2016-09-20 14:26:08 +02:00
kfifo.c
Partially revert "kfifo: fix kfifo_alloc() and kfifo_init()"
2020-01-29 10:24:30 +01:00
klist.c
scsi: klist: Make it safe to use klists in atomic context
2018-10-03 17:01:45 -07:00
kobject.c
kobject: Export kobject_get_unless_zero()
2020-01-14 20:04:25 +01:00
kobject_uevent.c
kobject_uevent: remove warning in init_uevent_argv()
2021-05-22 10:40:33 +02:00
kstrtox.c
lib/kstrtox.c: smaller _parse_integer()
2016-10-11 15:06:30 -07:00
kstrtox.h
lcm.c
libcrc32c.c
crypto: Work around deallocated stack frame reference gcc bug on sparc.
2017-06-24 07:11:17 +02:00
list_debug.c
Merge android-4.9.129 ( b727d1c) into msm-4.9
2018-11-07 13:12:49 +08:00
list_sort.c
llist.c
lib/llist.c: fix data race in llist_del_first
2015-11-06 17:50:42 -08:00
locking-selftest-hardirq.h
locking-selftest-mutex.h
locking-selftest-rlock-hardirq.h
locking-selftest-rlock-softirq.h
locking-selftest-rlock.h
locking-selftest-rsem.h
locking-selftest-softirq.h
locking-selftest-spin-hardirq.h
locking-selftest-spin-softirq.h
locking-selftest-spin.h
locking-selftest-wlock-hardirq.h
locking-selftest-wlock-softirq.h
locking-selftest-wlock.h
locking-selftest-wsem.h
locking-selftest.c
locking/selftest: Fix output since KERN_CONT changes
2016-11-25 07:12:19 +01:00
lockref.c
lru_cache.c
lru_cache: Converted lc_seq_printf_status to return void
2015-11-25 09:22:02 -07:00
Makefile
BACKPORT: error-injection: Separate error-injection from kprobe
2026-05-15 17:56:33 +07:00
md5.c
memory-notifier-error-inject.c
memweight.c
net_utils.c
netdev-notifier-error-inject.c
net: Add support for CHANGEUPPER notifier error injection
2015-12-03 11:49:23 -05:00
nlattr.c
net: fix nla_strcmp to handle more then one trailing null character
2022-06-14 16:52:38 +02:00
nmi_backtrace.c
nmi_backtrace: generate one-line reports for idle cpus
2016-10-07 18:46:30 -07:00
nodemask.c
nodemask: Fix return values to be unsigned
2022-06-14 16:52:40 +02:00
notifier-error-inject.c
lib/notifier-error-inject: fix error when writing -errno to debugfs file
2023-01-07 12:07:14 +01:00
notifier-error-inject.h
of-reconfig-notifier-error-inject.c
oid_registry.c
509: fix printing uninitialized stack memory when OID is empty
2018-02-25 11:05:48 +01:00
once.c
once: make helper generic for calling functions once
2015-10-08 05:26:36 -07:00
parser.c
pci_iomap.c
libnvdimm for 4.3:
2015-09-08 14:35:59 -07:00
percpu-refcount.c
percpu-refcount: init ->confirm_switch member properly
2016-08-11 13:52:23 -04:00
percpu_counter.c
percpu_counter: update debugobjects fixup callbacks return type
2016-05-19 19:12:14 -07:00
percpu_ida.c
mm, page_alloc: rename __GFP_WAIT to __GFP_RECLAIM
2015-11-06 17:50:42 -08:00
percpu_test.c
plist.c
pm-notifier-error-inject.c
qmi_encdec.c
soc: qcom: qmi_encdec: Restrict string length in decode
2019-03-05 16:21:06 +05:30
qmi_encdec_priv.h
soc: qcom: Add snapshot of QMI
2016-11-11 17:31:37 -08:00
radix-tree.c
Revert "radix tree test suite: fix compilation"
2016-12-09 10:41:42 -08:00
random32.c
random: replace custom notifier chain with standard one
2022-06-25 11:45:11 +02:00
ratelimit.c
ratelimit: Fix data-races in ___ratelimit().
2022-09-05 10:23:55 +02:00
rational.c
rbtree.c
rbtree: cache leftmost node internally
2022-01-27 08:47:42 +01:00
rbtree_test.c
lib/rbtree-test: lower default params
2018-12-21 14:11:30 +01:00
reciprocal_div.c
refcount.c
BACKPORT: locking/refcount: Create unchecked atomic_t implementation
2026-05-15 17:54:59 +07:00
rhashtable.c
rhashtable: add schedule points
2018-10-18 09:13:24 +02:00
sbitmap.c
sbitmap: initialize weight to zero
2016-09-19 08:19:40 -06:00
scatterlist.c
lib/scatterlist: add sg_init_marker() helper
2026-05-15 17:55:47 +07:00
seq_buf.c
seq_buf: Fix overflow in seq_buf_putmem_hex()
2021-07-20 16:21:09 +02:00
sg_pool.c
lib: scatterlist: move SG pool code from SCSI driver to lib/sg_pool.c
2016-04-15 16:53:14 -04:00
sg_split.c
sha1.c
lib/crypto: sha1: re-roll loops to reduce code size
2022-06-25 11:45:02 +02:00
show_mem.c
lib/show_mem.c: correct reserved memory calculation
2015-09-08 15:35:28 -07:00
siphash.c
siphash: use one source of truth for siphash permutations
2022-06-25 11:45:14 +02:00
smp_processor_id.c
sort.c
stackdepot.c
lib: stackdepot: turn depot_lock spinlock to raw_spinlock
2021-05-22 10:40:34 +02:00
stmp_device.c
string.c
Merge remote-tracking branch 'common/android-4.9-q' into lineage-18.1-caf-sdm845
2021-09-16 19:05:49 +03:00
string_helpers.c
string_helpers: add kstrdup_quotable_file
2016-04-21 10:47:26 +10:00
strncpy_from_user.c
BACKPORT: make 'user_access_begin()' do 'access_ok()'
2026-02-04 00:23:05 +02:00
strnlen_user.c
BACKPORT: make 'user_access_begin()' do 'access_ok()'
2026-02-04 00:23:05 +02:00
swiotlb.c
swiotlb: skip swiotlb_bounce when orig_addr is zero
2022-07-02 16:17:16 +02:00
syscall.c
lib/syscall: Clear return values when no stack
2017-04-08 09:30:35 +02:00
test-kstrtox.c
kstrto*: accept "-0" for signed conversion
2015-09-10 13:29:01 -07:00
test-string_helpers.c
lib/test-string_helpers.c: fix and improve string_get_size() tests
2016-02-03 08:28:43 -08:00
test_bitmap.c
test_bitmap: unit tests for lib/bitmap.c
2016-02-19 22:54:09 -05:00
test_bpf.c
BACKPORT: treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 295
2026-05-15 17:57:45 +07:00
test_firmware.c
test: firmware_class: add asynchronous request trigger
2016-01-07 13:44:22 -07:00
test_hash.c
lib/test_hash.c: fix warning in preprocessor symbol evaluation
2016-09-01 17:52:01 -07:00
test_hexdump.c
test_hexdump: use memcpy instead of strncpy
2018-12-08 13:05:04 +01:00
test_kasan.c
This is the 4.9.214 stable release
2020-02-17 10:05:12 +01:00
test_module.c
test_printf.c
UPSTREAM: lib/test_printf.c: accept "ptrval" as valid result for plain 'p' tests
2022-02-21 16:30:33 +01:00
test_rhashtable.c
rhashtable-test: Fix max_size parameter description
2016-08-08 12:52:42 -07:00
test_siphash.c
siphash: implement HalfSipHash1-3 for hash tables
2019-08-25 10:51:42 +02:00
test_static_key_base.c
test_static_keys.c
locking/static_keys: Avoid nested functions
2016-02-09 10:27:29 +01:00
test_user_copy.c
usercopy: Adjust tests to deal with SMAP/PAN
2017-06-14 15:06:05 +02:00
test_uuid.c
lib/uuid: add a test module
2016-05-30 15:26:57 -07:00
textsearch.c
timerqueue.c
lib/timerqueue: Rely on rbtree semantics for next timer
2022-01-27 08:47:42 +01:00
ts_bm.c
ts_fsm.c
ts_kmp.c
ubsan.c
ubsan: Fix nasty -Wbuiltin-declaration-mismatch GCC-9 warnings
2019-05-10 17:52:07 +02:00
ubsan.h
lib/ubsan: add type mismatch handler for new GCC/Clang
2018-02-17 13:21:20 +01:00
ucs2_string.c
lib/ucs2_string: Speed up ucs2_utf8size()
2016-09-09 16:08:46 +01:00
uuid.c
lib/uuid.c: use correct offset in uuid parser
2016-05-30 15:26:57 -07:00
vsprintf.c
BACKPORT: symbol lookup: introduce dereference_symbol_descriptor()
2026-05-15 17:57:02 +07:00
win_minmax.c
lib/win_minmax: windowed min or max estimator
2016-09-21 00:22:59 -04:00
xxhash.c
UPSTREAM: lib: Add xxhash module
2018-08-23 12:05:06 -07:00