Skip to content

[rocky10_2] History Rebuild through kernel-6.12.0-211.22.1.el10_2#1333

Open
PlaidCat wants to merge 64 commits into
rocky10_2from
rocky10_2_rebuild
Open

[rocky10_2] History Rebuild through kernel-6.12.0-211.22.1.el10_2#1333
PlaidCat wants to merge 64 commits into
rocky10_2from
rocky10_2_rebuild

Conversation

@PlaidCat

@PlaidCat PlaidCat commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator

This is an automated kernel history rebuild using cron and internal tooling. It follows the same process used for previous history rebuilds:

  • Download all unprocessed src.rpm packages
  • For each src.rpm:
    • Identify all commits in the changelog up to the last known tag (6.12.0-211)
    • Replay commits in chronological order (oldest to newest in the changelog) using git cherry-pick
    • Replace the code in the branch with the output of rpmbuild -bp for the corresponding src.rpm
    • Tag the rebuild branch

JIRA Tickets

Rebuild Splat Inspection

kernel-6.12.0-211.22.1.el10_2

$ cat ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/rebuild.details.txt
Rebuild_History BUILDABLE
Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50%
Number of commits in upstream range v6.12~1..kernel-mainline: 123983
Number of commits in rpm: 67
Number of commits matched with upstream: 63 (94.03%)
Number of commits in upstream but not in rpm: 123920
Number of commits NOT found in upstream: 4 (5.97%)

Rebuilding Kernel on Branch rocky10_2_rebuild_kernel-6.12.0-211.22.1.el10_2 for kernel-6.12.0-211.22.1.el10_2
Clean Cherry Picks: 42 (66.67%)
Empty Cherry Picks: 21 (33.33%)
_______________________________

__EMPTY COMMITS__________________________
67a4b6a89b99aff0883114e4ecba4b11aedc29a5 lsm: split the init code out into lsm_init.c
e02578561d47567be26e603c6d27c10a5aa4c2c4 lsm: consolidate lsm_allowed() and prepare_lsm() into lsm_prepare()
37f788f65528611f4482e2135d11ca34afb25828 lsm: introduce looping macros for the initialization code
cb1513db7a6ed82d22853608d78bbf72ad8c67c1 lsm: integrate report_lsm_order() code into caller
92ed3500c9a91f43e094c9b8fb4bab9976565d74 lsm: integrate lsm_early_cred() and lsm_early_task() into caller
faabedcd6e88ca1f65ef45d711d2e0c7288fd551 lsm: rename ordered_lsm_init() to lsm_init_ordered()
9f9dc69e06ecbc61e7a50b823b82a78daf130dc0 lsm: replace the name field with a pointer to the lsm_id struct
592b104f9b516b2c22cb23a2f4c34486fdb21bae lsm: rename the lsm order variables for consistency
250898ca335f337bc032a9693dc0a30a1cb85825 lsm: rework lsm_active_cnt and lsm_idlist[]
935d508d4d7ab9d19c603bd7eb2937249551d507 lsm: get rid of the lsm_names list and do some cleanup
2d67172612fd9df2c4d08533515ef483cb526dd9 lsm: rework the LSM enable/disable setter/getter functions
a748372a282ae1e23d5d4b14a3e190c28764cfd2 lsm: rename exists_ordered_lsm() to lsm_order_exists()
24a9c58978ee368cbd796a03cb6e8ade6e0b6f5f lsm: rename/rework append_ordered_lsm() into lsm_order_append()
752db06571816a3870b17814882425318b5ec0ef lsm: rename/rework ordered_lsm_parse() to lsm_order_parse()
291271e691740003021cf5b48fa7cf7e3371eaa7 lsm: cleanup the LSM blob size code
27be5600fe852c52d5b70f4ac9406879b39c864e lsm: cleanup initialize_lsm() and rename to lsm_init_single()
45a41d1394aa2ed0305f0560f93bb87be7192481 lsm: fold lsm_init_ordered() into security_init()
450705334f698990804b470437f3014cee979486 lsm: add/tweak function header comment blocks in lsm_init.c
5137e583ba2635b82667dc63cb35305750420411 lsm: cleanup the debug and console output in lsm_init.c
6af36aeb147a06dea47c49859cd6ca5659aeb987 lsm: add backing_file LSM hooks
82544d36b1729153c8aeb179e84750f0c085d3b1 selinux: fix overlayfs mmap() and mprotect() access checks

__CHANGES NOT IN UPSTREAM________________
Add partial riscv64 support for build root'
Provide basic VisionFive 2 support'
redhat: Fix rebuild changelog generation for automotive
ice: fix stats array overflow when VF requests more queues

BUILD

$ grep -E -B 5 -A 5 "\[TIMER\]|^Starting Build" $(ls -t kbuild* | head -n1)
/mnt/code/kernel-src-tree-build
Running make mrproper...
  CLEAN   scripts/basic
  CLEAN   scripts/kconfig
  CLEAN   include/config include/generated
[TIMER]{MRPROPER}: 6s
x86_64 architecture detected, copying config
'configs/kernel-x86_64-rhel.config' -> '.config'
Setting Local Version for build
CONFIG_LOCALVERSION="-rocky10_2_rebuild-7a8530d60323"
Making olddefconfig
--
  HOSTCC  scripts/kconfig/util.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#
Starting Build
  GEN     arch/x86/include/generated/asm/orc_hash.h
  WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h
  WRAP    arch/x86/include/generated/uapi/asm/errno.h
  WRAP    arch/x86/include/generated/uapi/asm/fcntl.h
  UPD     include/generated/uapi/linux/version.h
--
  LD [M]  net/qrtr/qrtr-mhi.ko
  LD [M]  virt/lib/irqbypass.ko
  BTF [M] net/qrtr/qrtr.ko
  BTF [M] net/qrtr/qrtr-mhi.ko
  BTF [M] virt/lib/irqbypass.ko
[TIMER]{BUILD}: 2199s
Making Modules
  SYMLINK /lib/modules/6.12.0-rocky10_2_rebuild-7a8530d60323+/build
  INSTALL /lib/modules/6.12.0-rocky10_2_rebuild-7a8530d60323+/modules.order
  INSTALL /lib/modules/6.12.0-rocky10_2_rebuild-7a8530d60323+/modules.builtin
  INSTALL /lib/modules/6.12.0-rocky10_2_rebuild-7a8530d60323+/modules.builtin.modinfo
--
  STRIP   /lib/modules/6.12.0-rocky10_2_rebuild-7a8530d60323+/kernel/virt/lib/irqbypass.ko
  SIGN    /lib/modules/6.12.0-rocky10_2_rebuild-7a8530d60323+/kernel/net/qrtr/qrtr-mhi.ko
  SIGN    /lib/modules/6.12.0-rocky10_2_rebuild-7a8530d60323+/kernel/virt/lib/irqbypass.ko
  SIGN    /lib/modules/6.12.0-rocky10_2_rebuild-7a8530d60323+/kernel/net/ieee802154/ieee802154_socket.ko
  DEPMOD  /lib/modules/6.12.0-rocky10_2_rebuild-7a8530d60323+
[TIMER]{MODULES}: 15s
Making Install
  INSTALL /boot
[TIMER]{INSTALL}: 21s
Checking kABI
kABI check passed
Setting Default Kernel to /boot/vmlinuz-6.12.0-rocky10_2_rebuild-7a8530d60323+ and Index to 0
Hopefully Grub2.0 took everything ... rebooting after time metrices
[TIMER]{MRPROPER}: 6s
[TIMER]{BUILD}: 2199s
[TIMER]{MODULES}: 15s
[TIMER]{INSTALL}: 21s
[TIMER]{TOTAL} 2246s
Rebooting in 10 seconds

KSelfTests

$ get_kselftest_diff.sh
kselftest.6.12.0-rocky10_2_rebuild-3419513285df+.log
491
kselftest.6.12.0-rocky10_2_rebuild-bda6623b0284+.log
492
kselftest.6.12.0-rocky10_2_rebuild-30c0c4db8d22+.log
492
kselftest.6.12.0-rocky10_2_rebuild-7a8530d60323+.log
491
Before: kselftest.6.12.0-rocky10_2_rebuild-30c0c4db8d22+.log
After: kselftest.6.12.0-rocky10_2_rebuild-7a8530d60323+.log
Diff:
-ok 2 selftests: seccomp: seccomp_benchmark
-ok 7 selftests: timers: raw_skew
+ok 7 selftests: timers: raw_skew # SKIP

PlaidCat added 30 commits June 11, 2026 13:35
jira KERNEL-1156
cve CVE-2026-31419
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Xiang Mei <xmei5@asu.edu>
commit 2884bf7

bond_xmit_broadcast() reuses the original skb for the last slave
(determined by bond_is_last_slave()) and clones it for others.
Concurrent slave enslave/release can mutate the slave list during
RCU-protected iteration, changing which slave is "last" mid-loop.
This causes the original skb to be double-consumed (double-freed).

Replace the racy bond_is_last_slave() check with a simple index
comparison (i + 1 == slaves_count) against the pre-snapshot slave
count taken via READ_ONCE() before the loop.  This preserves the
zero-copy optimization for the last slave while making the "last"
determination stable against concurrent list mutations.

The UAF can trigger the following crash:

==================================================================
BUG: KASAN: slab-use-after-free in skb_clone
Read of size 8 at addr ffff888100ef8d40 by task exploit/147

CPU: 1 UID: 0 PID: 147 Comm: exploit Not tainted 7.0.0-rc3+ #4 PREEMPTLAZY
Call Trace:
 <TASK>
 dump_stack_lvl (lib/dump_stack.c:123)
 print_report (mm/kasan/report.c:379 mm/kasan/report.c:482)
 kasan_report (mm/kasan/report.c:597)
 skb_clone (include/linux/skbuff.h:1724 include/linux/skbuff.h:1792 include/linux/skbuff.h:3396 net/core/skbuff.c:2108)
 bond_xmit_broadcast (drivers/net/bonding/bond_main.c:5334)
 bond_start_xmit (drivers/net/bonding/bond_main.c:5567 drivers/net/bonding/bond_main.c:5593)
 dev_hard_start_xmit (include/linux/netdevice.h:5325 include/linux/netdevice.h:5334 net/core/dev.c:3871 net/core/dev.c:3887)
 __dev_queue_xmit (include/linux/netdevice.h:3601 net/core/dev.c:4838)
 ip6_finish_output2 (include/net/neighbour.h:540 include/net/neighbour.h:554 net/ipv6/ip6_output.c:136)
 ip6_finish_output (net/ipv6/ip6_output.c:208 net/ipv6/ip6_output.c:219)
 ip6_output (net/ipv6/ip6_output.c:250)
 ip6_send_skb (net/ipv6/ip6_output.c:1985)
 udp_v6_send_skb (net/ipv6/udp.c:1442)
 udpv6_sendmsg (net/ipv6/udp.c:1733)
 __sys_sendto (net/socket.c:730 net/socket.c:742 net/socket.c:2206)
 __x64_sys_sendto (net/socket.c:2209)
 do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)
 entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)
 </TASK>

Allocated by task 147:

Freed by task 147:

The buggy address belongs to the object at ffff888100ef8c80
 which belongs to the cache skbuff_head_cache of size 224
The buggy address is located 192 bytes inside of
 freed 224-byte region [ffff888100ef8c80, ffff888100ef8d60)

Memory state around the buggy address:
 ffff888100ef8c00: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc
 ffff888100ef8c80: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff888100ef8d00: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
                                                    ^
 ffff888100ef8d80: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb
 ffff888100ef8e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================

Fixes: 4e5bd03 ("net: bonding: fix bond_xmit_broadcast return value error bug")
	Reported-by: Weiming Shi <bestswngs@gmail.com>
	Signed-off-by: Xiang Mei <xmei5@asu.edu>
Link: https://patch.msgid.link/20260326075553.3960562-1-xmei5@asu.edu
	Signed-off-by: Paolo Abeni <pabeni@redhat.com>
(cherry picked from commit 2884bf7)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Gerd Bayer <gbayer@linux.ibm.com>
commit 0fd20f6

Do not block PCI config accesses through pci_cfg_access_lock() when
executing the s390 variant of PCI error recovery: Acquire just
device_lock() instead of pci_dev_lock() as powerpc's EEH and
generig PCI AER processing do.

During error recovery testing a pair of tasks was reported to be hung:

mlx5_core 0000:00:00.1: mlx5_health_try_recover:338:(pid 5553): health recovery flow aborted, PCI reads still not working
INFO: task kmcheck:72 blocked for more than 122 seconds.
      Not tainted 5.14.0-570.12.1.bringup7.el9.s390x #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:kmcheck         state:D stack:0     pid:72    tgid:72    ppid:2      flags:0x00000000
Call Trace:
 [<000000065256f030>] __schedule+0x2a0/0x590
 [<000000065256f356>] schedule+0x36/0xe0
 [<000000065256f572>] schedule_preempt_disabled+0x22/0x30
 [<0000000652570a94>] __mutex_lock.constprop.0+0x484/0x8a8
 [<000003ff800673a4>] mlx5_unload_one+0x34/0x58 [mlx5_core]
 [<000003ff8006745c>] mlx5_pci_err_detected+0x94/0x140 [mlx5_core]
 [<0000000652556c5a>] zpci_event_attempt_error_recovery+0xf2/0x398
 [<0000000651b9184a>] __zpci_event_error+0x23a/0x2c0
INFO: task kworker/u1664:6:1514 blocked for more than 122 seconds.
      Not tainted 5.14.0-570.12.1.bringup7.el9.s390x #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:kworker/u1664:6 state:D stack:0     pid:1514  tgid:1514  ppid:2      flags:0x00000000
Workqueue: mlx5_health0000:00:00.0 mlx5_fw_fatal_reporter_err_work [mlx5_core]
Call Trace:
 [<000000065256f030>] __schedule+0x2a0/0x590
 [<000000065256f356>] schedule+0x36/0xe0
 [<0000000652172e28>] pci_wait_cfg+0x80/0xe8
 [<0000000652172f94>] pci_cfg_access_lock+0x74/0x88
 [<000003ff800916b6>] mlx5_vsc_gw_lock+0x36/0x178 [mlx5_core]
 [<000003ff80098824>] mlx5_crdump_collect+0x34/0x1c8 [mlx5_core]
 [<000003ff80074b62>] mlx5_fw_fatal_reporter_dump+0x6a/0xe8 [mlx5_core]
 [<0000000652512242>] devlink_health_do_dump.part.0+0x82/0x168
 [<0000000652513212>] devlink_health_report+0x19a/0x230
 [<000003ff80075a12>] mlx5_fw_fatal_reporter_err_work+0xba/0x1b0 [mlx5_core]

No kernel log of the exact same error with an upstream kernel is
available - but the very same deadlock situation can be constructed there,
too:

- task: kmcheck
  mlx5_unload_one() tries to acquire devlink lock while the PCI error
  recovery code has set pdev->block_cfg_access by way of
  pci_cfg_access_lock()
- task: kworker
  mlx5_crdump_collect() tries to set block_cfg_access through
  pci_cfg_access_lock() while devlink_health_report() had acquired
  the devlink lock.

A similar deadlock situation can be reproduced by requesting a
crdump with
  > devlink health dump show pci/<BDF> reporter fw_fatal

while PCI error recovery is executed on the same <BDF> physical function
by mlx5_core's pci_error_handlers. On s390 this can be injected with
  > zpcictl --reset-fw <BDF>

Tests with this patch failed to reproduce that second deadlock situation,
the devlink command is rejected with "kernel answers: Permission denied" -
and we get a kernel log message of:

mlx5_core 1ed0:00:00.1: mlx5_crdump_collect:50:(pid 254382): crdump: failed to lock vsc gw err -5

because the config read of VSC_SEMAPHORE is rejected by the underlying
hardware.

Two prior attempts to address this issue have been discussed and
ultimately rejected [see link], with the primary argument that s390's
implementation of PCI error recovery is imposing restrictions that
neither powerpc's EEH nor PCI AER handling need. Tests show that PCI
error recovery on s390 is running to completion even without blocking
access to PCI config space.

Link: https://lore.kernel.org/all/20251007144826.2825134-1-gbayer@linux.ibm.com/
	Cc: stable@vger.kernel.org
Fixes: 4cdf2f4 ("s390/pci: implement minimal PCI error recovery")
	Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
	Signed-off-by: Gerd Bayer <gbayer@linux.ibm.com>
	Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
(cherry picked from commit 0fd20f6)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Stefan Haberland <sth@linux.ibm.com>
commit c943bfc

After a copy pair swap the block device's "device" symlink points to
the secondary CCW device, but the gendisk's parent remained the
primary, leaving /sys/block/<dasdx> under the wrong parent.

Move the gendisk to the secondary's device with device_move(), keeping
the sysfs topology consistent after the swap.

Fixes: 413862c ("s390/dasd: add copy pair swap capability")
	Cc: stable@vger.kernel.org #6.1
	Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
	Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
	Signed-off-by: Jens Axboe <axboe@kernel.dk>
(cherry picked from commit c943bfc)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Stefan Haberland <sth@linux.ibm.com>
commit 40e9cd4

Quiesce and resume is a mechanism to suspend operations on DASD devices.
In the context of a controlled copy pair swap operation, the quiesce
operation is usually issued before the actual swap and a resume
afterwards.

During the swap operation, the underlying device is exchanged. Therefore,
the quiesce flag must be moved to the secondary device to ensure a
consistent quiesce state after the swap.

The secondary device itself cannot be suspended separately because there
is no separate block device representation for it.

Fixes: 413862c ("s390/dasd: add copy pair swap capability")
	Cc: stable@vger.kernel.org #6.1
	Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
	Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
Link: https://patch.msgid.link/20260310142330.4080106-2-sth@linux.ibm.com
	Signed-off-by: Jens Axboe <axboe@kernel.dk>
(cherry picked from commit 40e9cd4)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Stefan Haberland <sth@linux.ibm.com>
commit 4c527c7

During online processing for a DASD device an IO operation is started to
determine the format of the device. CDL format contains specifically
sized blocks at the beginning of the disk.

For a PPRC secondary device no real IO operation is possible therefore
this IO request can not be started and this step is skipped for online
processing of secondary devices. This is generally fine since the
secondary is a copy of the primary device.

In case of an additional partition detection that is run after a swap
operation the format information is needed to properly drive partition
detection IO.

Currently the information is not passed leading to IO errors during
partition detection and a wrongly detected partition table which in turn
might lead to data corruption on the disk with the wrong partition table.

Fix by passing the format information from primary to secondary device.

Fixes: 413862c ("s390/dasd: add copy pair swap capability")
	Cc: stable@vger.kernel.org #6.1
	Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
	Acked-by: Eduard Shishkin <edward6@linux.ibm.com>
	Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
Link: https://patch.msgid.link/20260310142330.4080106-3-sth@linux.ibm.com
	Signed-off-by: Jens Axboe <axboe@kernel.dk>
(cherry picked from commit 4c527c7)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Dave Airlie <airlied@redhat.com>
commit 9478c16

These WARN_ONs seem to trigger a lot, and we don't seem to have a
plan to fix them, so just drop them, as they are most likely
harmless.

	Cc: stable@vger.kernel.org
Fixes: 176fdcb ("drm/nouveau/gsp/r535: add support for booting GSP-RM")
	Signed-off-by: Dave Airlie <airlied@redhat.com>
Link: https://patch.msgid.link/20241121014601.229391-1-airlied@gmail.com
	Signed-off-by: Danilo Krummrich <dakr@kernel.org>
(cherry picked from commit 9478c16)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
cve CVE-2026-31532
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Samuel Page <sam@bynar.io>
commit a535a92

raw_release() unregisters raw CAN receive filters via can_rx_unregister(),
but receiver deletion is deferred with call_rcu(). This leaves a window
where raw_rcv() may still be running in an RCU read-side critical section
after raw_release() frees ro->uniq, leading to a use-after-free of the
percpu uniq storage.

Move free_percpu(ro->uniq) out of raw_release() and into a raw-specific
socket destructor. can_rx_unregister() takes an extra reference to the
socket and only drops it from the RCU callback, so freeing uniq from
sk_destruct ensures the percpu area is not released until the relevant
callbacks have drained.

Fixes: 514ac99 ("can: fix multiple delivery of a single CAN frame for overlapping CAN filters")
	Cc: stable@vger.kernel.org # v4.1+
Assisted-by: Bynario AI
	Signed-off-by: Samuel Page <sam@bynar.io>
Link: https://patch.msgid.link/26ec626d-cae7-4418-9782-7198864d070c@bynar.io
	Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
[mkl: applied manually]
	Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
(cherry picked from commit a535a92)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
cve CVE-2026-31467
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Jiucheng Xu <jiucheng.xu@amlogic.com>
commit c23df30

The bio completion path in the process context (e.g. dm-verity)
will directly call into decompression rather than trigger another
workqueue context for minimal scheduling latencies, which can
then call vm_map_ram() with GFP_KERNEL.

Due to insufficient memory, vm_map_ram() may generate memory
swapping I/O, which can cause submit_bio_wait to deadlock
in some scenarios.

Trimmed down the call stack, as follows:

f2fs_submit_read_io
  submit_bio                      //bio_list is initialized.
    mmc_blk_mq_recovery
      z_erofs_endio
        vm_map_ram
          __pte_alloc_kernel
            __alloc_pages_direct_reclaim
              shrink_folio_list
                __swap_writepage
                  submit_bio_wait  //bio_list is non-NULL, hang!!!

Use memalloc_noio_{save,restore}() to wrap up this path.

	Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
	Signed-off-by: Jiucheng Xu <jiucheng.xu@amlogic.com>
	Reviewed-by: Chao Yu <chao@kernel.org>
	Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
(cherry picked from commit c23df30)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
cve CVE-2026-31581
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Berk Cem Goksel <berkcgoksel@gmail.com>
commit b9c8269

In usb6fire_chip_abort(), the chip struct is allocated as the card's
private data (via snd_card_new with sizeof(struct sfire_chip)).  When
snd_card_free_when_closed() is called and no file handles are open, the
card and embedded chip are freed synchronously.  The subsequent
chip->card = NULL write then hits freed slab memory.

Call trace:
  usb6fire_chip_abort sound/usb/6fire/chip.c:59 [inline]
  usb6fire_chip_disconnect+0x348/0x358 sound/usb/6fire/chip.c:182
  usb_unbind_interface+0x1a8/0x88c drivers/usb/core/driver.c:458
  ...
  hub_event+0x1a04/0x4518 drivers/usb/core/hub.c:5953

Fix by moving the card lifecycle out of usb6fire_chip_abort() and into
usb6fire_chip_disconnect().  The card pointer is saved in a local
before any teardown, snd_card_disconnect() is called first to prevent
new opens, URBs are aborted while chip is still valid, and
snd_card_free_when_closed() is called last so chip is never accessed
after the card may be freed.

Fixes: a0810c3 ("ALSA: 6fire: Release resources at card release")
	Cc: stable@vger.kernel.org
	Cc: Andrey Konovalov <andreyknvl@gmail.com>
	Signed-off-by: Berk Cem Goksel <berkcgoksel@gmail.com>
Link: https://patch.msgid.link/20260410051341.1069716-1-berkcgoksel@gmail.com
	Signed-off-by: Takashi Iwai <tiwai@suse.de>
(cherry picked from commit b9c8269)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
cve CVE-2026-43037
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
Rebuild_CHGLOG: - ip6_tunnel: clear skb2->cb[] in ip4ip6_err() (Guillaume Nault) [RHEL-172651] {CVE-2026-43037}
Rebuild_FUZZ: 96.47%
commit-author Eric Dumazet <edumazet@google.com>
commit 2edfa31

Oskar Kjos reported the following problem.

ip4ip6_err() calls icmp_send() on a cloned skb whose cb[] was written
by the IPv6 receive path as struct inet6_skb_parm. icmp_send() passes
IPCB(skb2) to __ip_options_echo(), which interprets that cb[] region
as struct inet_skb_parm (IPv4). The layouts differ: inet6_skb_parm.nhoff
at offset 14 overlaps inet_skb_parm.opt.rr, producing a non-zero rr
value. __ip_options_echo() then reads optlen from attacker-controlled
packet data at sptr[rr+1] and copies that many bytes into dopt->__data,
a fixed 40-byte stack buffer (IP_OPTIONS_DATA_FIXED_SIZE).

To fix this we clear skb2->cb[], as suggested by Oskar Kjos.

Also add minimal IPv4 header validation (version == 4, ihl >= 5).

Fixes: c4d3efa ("[IPV6] IP6TUNNEL: Add support to IPv4 over IPv6 tunnel.")
	Reported-by: Oskar Kjos <oskar.kjos@hotmail.com>
	Signed-off-by: Eric Dumazet <edumazet@google.com>
	Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20260326155138.2429480-1-edumazet@google.com
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 2edfa31)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
cve CVE-2026-43501
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Greg Kroah-Hartman <gregkh@linuxfoundation.org>
commit 9e6bf14

ipv6_rpl_srh_rcv() decompresses an RFC 6554 Source Routing Header, swaps
the next segment into ipv6_hdr->daddr, recompresses, then pulls the old
header and pushes the new one plus the IPv6 header back.  The
recompressed header can be larger than the received one when the swap
reduces the common-prefix length the segments share with daddr (CmprI=0,
CmprE>0, seg[0][0] != daddr[0] gives the maximum +8 bytes).

pskb_expand_head() was gated on segments_left == 0, so on earlier
segments the push consumed unchecked headroom.  Once skb_push() leaves
fewer than skb->mac_len bytes in front of data,
skb_mac_header_rebuild()'s call to:

	skb_set_mac_header(skb, -skb->mac_len);

will store (data - head) - mac_len into the u16 mac_header field, which
wraps to ~65530, and the following memmove() writes mac_len bytes ~64KiB
past skb->head.

A single AF_INET6/SOCK_RAW/IPV6_HDRINCL packet over lo with a two
segment type-3 SRH (CmprI=0, CmprE=15) reaches headroom 8 after one
pass; KASAN reports a 14-byte OOB write in ipv6_rthdr_rcv.

Fix this by expanding the head whenever the remaining room is less than
the push size plus mac_len, and request that much extra so the rebuilt
MAC header fits afterwards.

Fixes: 8610c7c ("net: ipv6: add support for rpl sr exthdr")
	Cc: stable <stable@kernel.org>
	Reported-by: Anthropic
	Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patch.msgid.link/2026042133-gout-unvented-1bd9@gregkh
	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 9e6bf14)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Amir Goldstein <amir73il@gmail.com>
commit 4e301d8

Add internal helper backing_file_set_user_path() for the only
two cases that need to modify backing_file fields.

	Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Link: https://lore.kernel.org/20250607115304.2521155-2-amir73il@gmail.com
	Signed-off-by: Christian Brauner <brauner@kernel.org>
(cherry picked from commit 4e301d8)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit a5e7c17

In an effort to decompose security/security.c somewhat to make it less
twisted and unwieldy, pull out the LSM notifier code into a new file
as it is fairly well self-contained.

No code changes.

	Reviewed-by: Kees Cook <kees@kernel.org>
	Reviewed-by: John Johansen <john.johansen@canonical.com>
	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit a5e7c17)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 67a4b6a
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/67a4b6a8.failed

Continue to pull code out of security/security.c to help improve
readability by pulling all of the LSM framework initialization
code out into a new file.

No code changes.

	Reviewed-by: Kees Cook <kees@kernel.org>
	Reviewed-by: John Johansen <john.johansen@canonical.com>
	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 67a4b6a)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/security.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit e025785
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/e0257856.failed

Simplify and consolidate the lsm_allowed() and prepare_lsm() functions
into a new function, lsm_prepare().

	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: John Johansen <john.johhansen@canonical.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit e025785)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 37f788f
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/37f788f6.failed

There are three common for loop patterns in the LSM initialization code
to loop through the ordered LSM list and the registered "early" LSMs.
This patch implements these loop patterns as macros to help simplify the
code and reduce the chance for errors.

	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: John Johansen <john.johhansen@canonical.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 37f788f)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit cb1513d
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/cb1513db.failed

With only one caller of report_lsm_order(), insert the function's code
directly into the caller and ger rid of report_lsm_order().

	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: John Johansen <john.johhansen@canonical.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit cb1513d)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 92ed350
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/92ed3500.failed

With only one caller of lsm_early_cred() and lsm_early_task(), insert
the functions' code directly into the caller and ger rid of the two
functions.

	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: John Johansen <john.johhansen@canonical.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 92ed350)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit faabedc
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/faabedcd.failed

The new name more closely fits the rest of the naming scheme in
security/lsm_init.c.  This patch also adds a trivial comment block to
the top of the function.

	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: John Johansen <john.johhansen@canonical.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit faabedc)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 9f9dc69
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/9f9dc69e.failed

Reduce the duplication between the lsm_id struct and the DEFINE_LSM()
definition by linking the lsm_id struct directly into the individual
LSM's DEFINE_LSM() instance.

Linking the lsm_id into the LSM definition also allows us to simplify
the security_add_hooks() function by removing the code which populates
the lsm_idlist[] array and moving it into the normal LSM startup code
where the LSM list is parsed and the individual LSMs are enabled,
making for a cleaner implementation with less overhead at boot.

	Reviewed-by: Kees Cook <kees@kernel.org>
	Reviewed-by: John Johansen <john.johansen@canonical.com>
	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 9f9dc69)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 592b104
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/592b104f.failed

Rename the builtin_lsm_order variable to lsm_order_builtin,
chosen_lsm_order to lsm_order_cmdline, chosen_major_lsm to
lsm_order_legacy, ordered_lsms[] to lsm_order[], and exclusive
to lsm_exclusive.

This patch also renames the associated kernel command line parsing
functions and adds some basic function comment blocks.  The parsing
function choose_major_lsm() was renamed to lsm_choose_security(),
choose_lsm_order() to lsm_choose_lsm(), and enable_debug() to
lsm_debug_enable().

	Reviewed-by: Kees Cook <kees@kernel.org>
	Reviewed-by: John Johansen <john.johansen@canonical.com>
	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 592b104)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 250898c
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/250898ca.failed

Move the LSM active count and lsm_id list declarations out of a header
that is visible across the kernel and into a header that is limited to
the LSM framework.  This not only helps keep the include/linux headers
smaller and cleaner, it helps prevent misuse of these variables.

	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: John Johansen <john.johhansen@canonical.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 250898c)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm.h
#	security/lsm_init.c
#	security/security.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 935d508
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/935d508d.failed

The LSM currently has a lot of code to maintain a list of the currently
active LSMs in a human readable string, with the only user being the
"/sys/kernel/security/lsm" code.  Let's drop all of that code and
generate the string on first use and then cache it for subsequent use.

	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 935d508)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 2d67172
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/2d671726.failed

In addition to style changes, rename set_enabled() to lsm_enabled_set()
and is_enabled() to lsm_is_enabled() to better fit within the LSM
initialization code.

	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: John Johansen <john.johhansen@canonical.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 2d67172)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit a748372
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/a748372a.failed

Also add a header comment block to the function.

	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: John Johansen <john.johhansen@canonical.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit a748372)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 24a9c58
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/24a9c589.failed

Rename append_ordered_lsm() to lsm_order_append() to better match
convention and do some rework.  The rework includes moving the
LSM_FLAG_EXCLUSIVE logic from lsm_prepare() to lsm_order_append()
in order to consolidate the individual LSM append/activation code,
and adding logic to skip appending explicitly disabled LSMs to the
active LSM list.

	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: John Johansen <john.johhansen@canonical.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 24a9c58)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 752db06
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/752db065.failed

Rename ordered_lsm_parse() to lsm_order_parse() for the sake of
consistency with the other LSM initialization routines, and also
do some minor rework of the function.  Aside from some minor style
decisions, the majority of the rework involved shuffling the order
of the LSM_FLAG_LEGACY and LSM_ORDER_FIRST code so that the
LSM_FLAG_LEGACY checks are handled first; it is important to note
that this doesn't affect the order in which the LSMs are registered.

	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: John Johansen <john.johhansen@canonical.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 752db06)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 291271e
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/291271e6.failed

Convert the lsm_blob_size fields to unsigned integers as there is no
current need for them to be negative, change "lsm_set_blob_size()" to
"lsm_blob_size_update()" to better reflect reality, and perform some
other minor cleanups to the associated code.

	Reviewed-by: Kees Cook <kees@kernel.org>
	Reviewed-by: John Johansen <john.johansen@canonical.com>
	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 291271e)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	include/linux/lsm_hooks.h
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 27be560
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/27be5600.failed

Rename initialize_lsm() to be more consistent with the rest of the LSM
initialization changes and rework the function itself to better fit
with the "exit on fail" coding pattern.

	Reviewed-by: Kees Cook <kees@kernel.org>
	Reviewed-by: John Johansen <john.johansen@canonical.com>
	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 27be560)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
jira KERNEL-1156
cve CVE-2026-46054
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Paul Moore <paul@paul-moore.com>
commit 45a41d1
Empty-Commit: Cherry-Pick Conflicts during history rebuild.
Will be included in final tarball splat. Ref for failed cherry-pick at:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/45a41d13.failed

With only security_init() calling lsm_init_ordered, it makes little
sense to keep lsm_init_ordered() as a standalone function.  Fold
lsm_init_ordered() into security_init().

	Reviewed-by: Casey Schaufler <casey@schaufler-ca.com>
	Reviewed-by: John Johansen <john.johhansen@canonical.com>
	Signed-off-by: Paul Moore <paul@paul-moore.com>
(cherry picked from commit 45a41d1)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>

# Conflicts:
#	security/lsm_init.c
PlaidCat added 26 commits June 11, 2026 13:35
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 6f2c2f9

The code had references to initialize the Elf_Rel relocation tables, but
it was never used. Remove it.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/20250105162344.515342233@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 6f2c2f9)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 66990c0

The ORC code reads the section information directly from the file. This
currently works because the default read function is for 64bit little
endian machines. But if for some reason that ever changes, this will
break. Instead of having a surprise breakage, use the _r() functions that
will read the values from the file properly.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/20250105162344.721480386@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 66990c0)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 7ffc0d0

Instead of having the compare_extable() part of the sorttable.h header
where it get's defined twice, since it is a very simple function, just
define it twice in sorttable.c, and then it can use the proper read
functions for the word size and endianess and the Elf_Addr macro can be
removed from sorttable.h.

Also add a micro optimization. Instead of:

    if (a < b)
        return -1;
    if (a > b)
        return 1;
    return 0;

That can be shorten to:

   if (a < b)
      return -1;
   return a > b;

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/20250105162344.945299671@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 7ffc0d0)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 157fb5b

In order to remove the double #include of sorttable.h for 64 and 32 bit
to create duplicate functions for both, replace the Elf_Ehdr macro with a
union that defines both Elf64_Ehdr and Elf32_Ehdr, with field e64 for the
64bit version, and e32 for the 32bit version.

Then a macro etype can be used instead to get to the proper value.

This will eventually be replaced with just single functions that can
handle both 32bit and 64bit ELF parsing.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/20250105162345.148224465@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 157fb5b)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 545f6cf

In order to remove the double #include of sorttable.h for 64 and 32 bit
to create duplicate functions for both, replace the Elf_Shdr macro with a
union that defines both Elf64_Shdr and Elf32_Shdr, with field e64 for the
64bit version, and e32 for the 32bit version.

It can then use the macro etype to get the proper value.

This will eventually be replaced with just single functions that can
handle both 32bit and 64bit ELF parsing.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/20250105162345.339462681@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 545f6cf)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 200d015

In order to remove the double #include of sorttable.h for 64 and 32 bit
to create duplicate functions for both, replace the Elf_Sym macro with a
union that defines both Elf64_Sym and Elf32_Sym, with field e64 for the
64bit version, and e32 for the 32bit version.

It can then use the macro etype to get the proper value.

This will eventually be replaced with just single functions that can
handle both 32bit and 64bit ELF parsing.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/20250105162345.528626969@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 200d015)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 1dfb59a

In order to remove the double #include of sorttable.h for 64 and 32 bit
to create duplicate functions, add helper functions for Elf_Ehdr.  This
will create a function pointer for each helper that will get assigned to
the appropriate function to handle either the 64bit or 32bit version.

This also moves the _r()/r() wrappers for the Elf_Ehdr references that
handle endian and size differences between the different architectures,
into the helper function and out of the open code which is more error
prone.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/20250105162345.736369526@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 1dfb59a)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 67afb7f

In order to remove the double #include of sorttable.h for 64 and 32 bit
to create duplicate functions, add helper functions for Elf_Shdr.  This
will create a function pointer for each helper that will get assigned to
the appropriate function to handle either the 64bit or 32bit version.

This also moves the _r()/r() wrappers for the Elf_Shdr references that
handle endian and size differences between the different architectures,
into the helper function and out of the open code which is more error
prone.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/20250105162345.940924221@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 67afb7f)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 17bed33

In order to remove the double #include of sorttable.h for 64 and 32 bit
to create duplicate functions, add helper functions for Elf_Sym.  This
will create a function pointer for each helper that will get assigned to
the appropriate function to handle either the 64bit or 32bit version.

This also removes the last references of etype and _r() macros from the
sorttable.h file as their references are now just defined in the
appropriate architecture version of the helper functions. All read
functions now exist in the helper functions which makes it easier to
maintain, as the helper functions define the necessary architecture sizes.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/20250105162346.185740651@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 17bed33)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 1b649e6

The mcount sorting defines uint_t to uint64_t on 64bit architectures and
uint32_t on 32bit architectures. It can work with just using uint64_t as
that will hold the values of both, and they are not used to point into the
ELF file.

sizeof(uint_t) is used for defining the size of the mcount_loc section.
Instead of using a type, define long_size and use that instead. This will
allow the header code to be moved into the C file as generic functions and
not need to include sorttable.h twice, once for 64bit and once for 32bit.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/20250105162346.373528925@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 1b649e6)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 58d8767

Instead of having the main code live in a header file and included twice
with MACROs that define the Elf structures for 64 bit or 32 bit, move the
code in the C file now that the Elf structures are defined in a union that
has both. All accesses to the Elf structure fields are done through helper
function pointers. If the file being parsed if for a 64 bit architecture,
all the helper functions point to the 64 bit versions to retrieve the Elf
fields. The same is true if the architecture is 32 bit, where the function
pointers will point to the 32 bit helper functions.

Note, when the value of a field can be either 32 bit or 64 bit, a 64 bit
is always returned, as it works for the 32 bit code as well.

This makes the code easier to read and maintain, and it now all exists in
sorttable.c and sorttable.h may be removed.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
	Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Link: https://lore.kernel.org/20250107223217.6f7f96a5@gandalf.local.home
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 58d8767)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 4acda8e

The get_mcount_loc() does a cheesy trick to find the start_mcount_loc and
stop_mcount_loc values. That trick is:

 file_start = popen(" grep start_mcount System.map | awk '{print $1}' ", "r");

and

 file_stop = popen(" grep stop_mcount System.map | awk '{print $1}' ", "r");

Those values are stored in the Elf symbol table. Use that to capture those
values. Using the symbol table is more efficient and more robust. The
above could fail if another variable had "start_mcount" or "stop_mcount"
as part of its name.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/20250105162346.817157047@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 4acda8e)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 1e5f677

Instead of having a series of function pointers that gets assigned to the
Elf64 or Elf32 versions, put them all into a single structure and use
that. Add the helper function that chooses the structure into the macros
that build the different versions of the elf functions.

Link: https://lore.kernel.org/all/CAHk-=wiafEyX7UgOeZgvd6fvuByE5WXUPh9599kwOc_d-pdeug@mail.gmail.com/

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
	Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Link: https://lore.kernel.org/20250110075459.13d4b94c@gandalf.local.home
	Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 1e5f677)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit b3d09d0

The mcount_loc section holds the addresses of the functions that get
patched by ftrace when enabling function callbacks. It can contain tens of
thousands of entries. These addresses must be sorted. If they are not
sorted at compile time, they are sorted at boot. Sorting at boot does take
some time and does have a small impact on boot performance.

x86 and arm32 have the addresses in the mcount_loc section of the ELF
file. But for arm64, the section just contains zeros. The .rela.dyn
Elf_Rela section holds the addresses and they get patched at boot during
the relocation phase.

In order to sort these addresses, the Elf_Rela needs to be updated instead
of the location in the binary that holds the mcount_loc section. Have the
sorttable code, allocate an array to hold the functions, load the
addresses from the Elf_Rela entries, sort them, then put them back in
order into the Elf_rela entries so that they will be sorted at boot up
without having to sort them during boot up.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
	Cc: Heiko Carstens <hca@linux.ibm.com>
	Cc: Will Deacon <will@kernel.org>
	Cc: Vasily Gorbik <gor@linux.ibm.com>
	Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Link: https://lore.kernel.org/20250218200022.373319428@goodmis.org
	Acked-by: Catalin Marinas <catalin.marinas@arm.com>
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit b3d09d0)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit a026565

The mcount_loc sorting for when the values are stored in the Elf_Rela
entries uses the compare_extable() function to do the compares in the
qsort(). That function does handle byte swapping if the machine being
compiled for is a different endian than the host machine. But the
sort_relocs() function sorts an array that pulled in the values from the
Elf_Rela section and has already done the swapping.

Create two new compare functions that will sort the direct values. One
will sort 32 bit values and the other will sort the 64 bit value. One of
these will be assigned to a compare_values function pointer and that will
be used for sorting the Elf_Rela mcount values.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
	Cc: Heiko Carstens <hca@linux.ibm.com>
	Cc: Catalin Marinas <catalin.marinas@arm.com>
	Cc: Will Deacon <will@kernel.org>
	Cc: Vasily Gorbik <gor@linux.ibm.com>
	Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Link: https://lore.kernel.org/20250218200022.538888594@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit a026565)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 5fb964f

The sorting of the mcount_loc section is done directly to the section for
x86 and arm32 but it uses a separate array for arm64 as arm64 has the
values for the mcount_loc stored in the rela sections of the vmlinux ELF
file.

In order to use the same code to remove weak functions, always use a
separate array to do the sorting. This requires splitting up the filling
of the array into one function and the placing the contents of the array
back into the rela sections or into the mcount_loc section into a separate
file.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
	Cc: Heiko Carstens <hca@linux.ibm.com>
	Cc: Catalin Marinas <catalin.marinas@arm.com>
	Cc: Will Deacon <will@kernel.org>
	Cc: Vasily Gorbik <gor@linux.ibm.com>
	Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Link: https://lore.kernel.org/20250218200022.710676551@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 5fb964f)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit ef378c3

When a function is annotated as "weak" and is overridden, the code is not
removed. If it is traced, the fentry/mcount location in the weak function
will be referenced by the "__mcount_loc" section. This will then be added
to the available_filter_functions list. Since only the address of the
functions are listed, to find the name to show, a search of kallsyms is
used.

Since kallsyms will return the function by simply finding the function
that the address is after but before the next function, an address of a
weak function will show up as the function before it. This is because
kallsyms does not save names of weak functions. This has caused issues in
the past, as now the traced weak function will be listed in
available_filter_functions with the name of the function before it.

At best, this will cause the previous function's name to be listed twice.
At worse, if the previous function was marked notrace, it will now show up
as a function that can be traced. Note that it only shows up that it can
be traced but will not be if enabled, which causes confusion.

 https://lore.kernel.org/all/20220412094923.0abe90955e5db486b7bca279@kernel.org/

The commit b39181f ("ftrace: Add FTRACE_MCOUNT_MAX_OFFSET to avoid
adding weak function") was a workaround to this by checking the function
address before printing its name. If the address was too far from the
function given by the name then instead of printing the name it would
print: __ftrace_invalid_address___<invalid-offset>

The real issue is that these invalid addresses are listed in the ftrace
table look up which available_filter_functions is derived from. A place
holder must be listed in that file because set_ftrace_filter may take a
series of indexes into that file instead of names to be able to do O(1)
lookups to enable filtering (many tools use this method).

Even if kallsyms saved the size of the function, it does not remove the
need of having these place holders. The real solution is to not add a weak
function into the ftrace table in the first place.

To solve this, the sorttable.c code that sorts the mcount regions during
the build is modified to take a "nm -S vmlinux" input, sort it, and any
function listed in the mcount_loc section that is not within a boundary of
the function list given by nm is considered a weak function and is zeroed
out.

Note, this does not mean they will remain zero when booting as KASLR
will still shift those addresses. To handle this, the entries in the
mcount_loc section will be ignored if they are zero or match the
kaslr_offset() value.

Before:

 ~# grep __ftrace_invalid_address___ /sys/kernel/tracing/available_filter_functions | wc -l
 551

After:

 ~# grep __ftrace_invalid_address___ /sys/kernel/tracing/available_filter_functions | wc -l
 0

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
	Cc: Heiko Carstens <hca@linux.ibm.com>
	Cc: Catalin Marinas <catalin.marinas@arm.com>
	Cc: Will Deacon <will@kernel.org>
	Cc: Vasily Gorbik <gor@linux.ibm.com>
	Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Link: https://lore.kernel.org/20250218200022.883095980@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit ef378c3)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 4a3efc6

Now that weak functions turn into skipped entries, update the check to
make sure the amount that was allocated would fit both the entries that
were allocated as well as those that were skipped.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
	Cc: Heiko Carstens <hca@linux.ibm.com>
	Cc: Catalin Marinas <catalin.marinas@arm.com>
	Cc: Will Deacon <will@kernel.org>
	Cc: Vasily Gorbik <gor@linux.ibm.com>
	Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Link: https://lore.kernel.org/20250218200023.055162048@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 4a3efc6)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 264143c

The amount of memory that ftrace uses to save the descriptors to manage
the functions it can trace is shown at output. But if there are a lot of
functions that are skipped because they were weak or the architecture
added holes into the tables, then the extra pages that were allocated are
freed. But these freed pages are not reflected in the numbers shown, and
they can even be inconsistent with what is reported:

 ftrace: allocating 57482 entries in 225 pages
 ftrace: allocated 224 pages with 3 groups

The above shows the number of original entries that are in the mcount_loc
section and the pages needed to save them (225), but the second output
reflects the number of pages that were actually used. The two should be
consistent as:

 ftrace: allocating 56739 entries in 224 pages
 ftrace: allocated 224 pages with 3 groups

The above also shows the accurate number of entires that were actually
stored and does not include the entries that were removed.

	Cc: bpf <bpf@vger.kernel.org>
	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Peter Zijlstra <peterz@infradead.org>
	Cc: Linus Torvalds <torvalds@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Nicolas Schier <nicolas@fjasle.eu>
	Cc: Zheng Yejian <zhengyejian1@huawei.com>
	Cc: Martin  Kelly <martin.kelly@crowdstrike.com>
	Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
	Cc: Josh Poimboeuf <jpoimboe@redhat.com>
	Cc: Heiko Carstens <hca@linux.ibm.com>
	Cc: Catalin Marinas <catalin.marinas@arm.com>
	Cc: Will Deacon <will@kernel.org>
	Cc: Vasily Gorbik <gor@linux.ibm.com>
	Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Link: https://lore.kernel.org/20250218200023.221100846@goodmis.org
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 264143c)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Guenter Roeck <linux@roeck-us.net>
commit be55257

The pg_remaining calculation in ftrace_process_locs() assumes that
ENTRIES_PER_PAGE multiplied by 2^order equals the actual capacity of the
allocated page group. However, ENTRIES_PER_PAGE is PAGE_SIZE / ENTRY_SIZE
(integer division). When PAGE_SIZE is not a multiple of ENTRY_SIZE (e.g.
4096 / 24 = 170 with remainder 16), high-order allocations (like 256 pages)
have significantly more capacity than 256 * 170. This leads to pg_remaining
being underestimated, which in turn makes skip (derived from skipped -
pg_remaining) larger than expected, causing the WARN(skip != remaining)
to trigger.

Extra allocated pages for ftrace: 2 with 654 skipped
WARNING: CPU: 0 PID: 0 at kernel/trace/ftrace.c:7295 ftrace_process_locs+0x5bf/0x5e0

A similar problem in ftrace_allocate_records() can result in allocating
too many pages. This can trigger the second warning in
ftrace_process_locs().

Extra allocated pages for ftrace
WARNING: CPU: 0 PID: 0 at kernel/trace/ftrace.c:7276 ftrace_process_locs+0x548/0x580

Use the actual capacity of a page group to determine the number of pages
to allocate. Have ftrace_allocate_pages() return the number of allocated
pages to avoid having to calculate it. Use the actual page group capacity
when validating the number of unused pages due to skipped entries.
Drop the definition of ENTRIES_PER_PAGE since it is no longer used.

	Cc: stable@vger.kernel.org
Fixes: 4a3efc6 ("ftrace: Update the mcount_loc check of skipped entries")
Link: https://patch.msgid.link/20260113152243.3557219-1-linux@roeck-us.net
	Signed-off-by: Guenter Roeck <linux@roeck-us.net>
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit be55257)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 6eeca74

The addresses in the mcount_loc can be zeroed and then moved by KASLR
making them invalid addresses. ftrace_call_addr() for ARM 64 expects a
valid address to kernel text. If the addr read from the mcount_loc section
is invalid, it must not call ftrace_call_addr(). Move the addr check
before calling ftrace_call_addr() in ftrace_process_locs().

	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Catalin Marinas <catalin.marinas@arm.com>
	Cc: Will Deacon <will@kernel.org>
	Cc: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/20250225182054.290128736@goodmis.org
Fixes: ef378c3 ("scripts/sorttable: Zero out weak functions in mcount_loc table")
	Reported-by: Nathan Chancellor <nathan@kernel.org>
	Reported-by: "Arnd Bergmann" <arnd@arndb.de>
	Tested-by: Nathan Chancellor <nathan@kernel.org>
Closes: https://lore.kernel.org/all/20250225025631.GA271248@ax162/
Closes: https://lore.kernel.org/all/91523154-072b-437b-bbdc-0b70e9783fd0@app.fastmail.com/
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 6eeca74)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit da0f622

As kaslr_offset() is architecture dependent and also may not be defined by
all architectures, when zeroing out unused weak functions, do not check
against kaslr_offset(), but instead check if the address is within the
kernel text sections. If KASLR added a shift to the zeroed out function,
it would still not be located in the kernel text. This is a more robust
way to test if the text is valid or not.

	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Catalin Marinas <catalin.marinas@arm.com>
	Cc: Will Deacon <will@kernel.org>
	Cc: "Arnd Bergmann" <arnd@arndb.de>
Link: https://lore.kernel.org/20250225182054.471759017@goodmis.org
Fixes: ef378c3 ("scripts/sorttable: Zero out weak functions in mcount_loc table")
	Reported-by: Nathan Chancellor <nathan@kernel.org>
	Reported-by: Mark Brown <broonie@kernel.org>
	Tested-by: Nathan Chancellor <nathan@kernel.org>
Closes: https://lore.kernel.org/all/20250224180805.GA1536711@ax162/
Closes: https://lore.kernel.org/all/5225b07b-a9b2-4558-9d5f-aa60b19f6317@sirena.org.uk/
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit da0f622)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
…section

jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit 46514b3

When ARM 64 is compiled with gcc, the mcount_loc section will be filled
with zeros and the addresses will be located in the Elf_Rela sections. To
sort the mcount_loc section, the addresses from the Elf_Rela need to be
placed into an array and that is sorted.

But when ARM 64 is compiled with clang, it does it the same way as other
architectures and leaves the addresses as is in the mcount_loc section.

To handle both cases, ARM 64 will first try to sort the Elf_Rela section,
and if it doesn't find any functions, it will then fall back to the
sorting of the addresses in the mcount_loc section itself.

	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Catalin Marinas <catalin.marinas@arm.com>
	Cc: Will Deacon <will@kernel.org>
	Cc: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/20250225182054.648398403@goodmis.org
Fixes: b3d09d0 ("arm64: scripts/sorttable: Implement sorting mcount_loc at boot for arm64")
	Reported-by: "Arnd Bergmann" <arnd@arndb.de>
	Tested-by: Nathan Chancellor <nathan@kernel.org>
Closes: https://lore.kernel.org/all/893cd8f1-8585-4d25-bf0f-4197bf872465@app.fastmail.com/
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 46514b3)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Steven Rostedt <rostedt@goodmis.org>
commit dc208c6

ARM 64 uses -fpatchable-function-entry=4,2 which adds padding before the
function and the addresses in the mcount_loc point there instead of the
function entry that is returned by nm. In order to find a function from nm
to make sure it's not an unused weak function, the entries in the
mcount_loc section needs to match the entries from nm. Since it can be an
instruction before the entry, add a before_func variable that ARM 64 can
set to 8, and if the mcount_loc entry is within 8 bytes of the nm function
entry, then it will be considered a match.

	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Mark Rutland <mark.rutland@arm.com>
	Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
	Cc: Andrew Morton <akpm@linux-foundation.org>
	Cc: Masahiro Yamada <masahiroy@kernel.org>
	Cc: Catalin Marinas <catalin.marinas@arm.com>
	Cc: Will Deacon <will@kernel.org>
	Cc: "Arnd Bergmann" <arnd@arndb.de>
	Cc: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/20250225182054.815536219@goodmis.org
Fixes: ef378c3 ("scripts/sorttable: Zero out weak functions in mcount_loc table")
	Tested-by: Nathan Chancellor <nathan@kernel.org>
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit dc208c6)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira KERNEL-1156
Rebuild_History Non-Buildable kernel-6.12.0-211.22.1.el10_2
commit-author Vasily Gorbik <gor@linux.ibm.com>
commit 023f124

Kernel cross-compilation with BUILDTIME_MCOUNT_SORT produces zeroed
mcount values if the build-host endianness does not match the ELF
file endianness.

The mcount values array is converted from ELF file
endianness to build-host endianness during initialization in
fill_relocs()/fill_addrs(). Avoid extra conversion of these values during
weak-function zeroing; otherwise, they do not match nm-parsed addresses
and all mcount values are zeroed out.

	Cc: Masami Hiramatsu <mhiramat@kernel.org>
	Cc: Catalin Marinas <catalin.marinas@arm.com>
	Cc: Nathan Chancellor <nathan@kernel.org>
	Cc: Heiko Carstens <hca@linux.ibm.com>
	Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Link: https://lore.kernel.org/patch.git-dca31444b0f1.your-ad-here.call-01743554658-ext-8692@work.hours
Fixes: ef378c3 ("scripts/sorttable: Zero out weak functions in mcount_loc table")
	Reported-by: Ilya Leoshkevich <iii@linux.ibm.com>
	Reported-by: Ihor Solodrai <ihor.solodrai@linux.dev>
Closes: https://lore.kernel.org/all/your-ad-here.call-01743522822-ext-4975@work.hours/
	Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
	Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
(cherry picked from commit 023f124)
	Signed-off-by: Jonathan Maple <jmaple@ciq.com>
Rebuild_History BUILDABLE
Rebuilding Kernel from rpm changelog with Fuzz Limit: 87.50%
Number of commits in upstream range v6.12~1..kernel-mainline: 123983
Number of commits in rpm: 67
Number of commits matched with upstream: 63 (94.03%)
Number of commits in upstream but not in rpm: 123920
Number of commits NOT found in upstream: 4 (5.97%)

Rebuilding Kernel on Branch rocky10_2_rebuild_kernel-6.12.0-211.22.1.el10_2 for kernel-6.12.0-211.22.1.el10_2
Clean Cherry Picks: 42 (66.67%)
Empty Cherry Picks: 21 (33.33%)
_______________________________

Full Details Located here:
ciq/ciq_backports/kernel-6.12.0-211.22.1.el10_2/rebuild.details.txt

Includes:
* git commit header above
* Empty Commits with upstream SHA
* RPM ChangeLog Entries that could not be matched

Individual Empty Commit failures contained in the same containing directory.
The git message for empty commits will have the path for the failed commit.
File names are the first 8 characters of the upstream SHA
@PlaidCat PlaidCat self-assigned this Jun 11, 2026
@PlaidCat PlaidCat requested review from a team June 11, 2026 18:48

@bmastbergen bmastbergen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🥌

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants