Skip to content

Conversation

pvts-mat
Copy link
Contributor

@pvts-mat pvts-mat commented Sep 16, 2025

[LTS 9.4]
CVE-2025-22121 VULN-65381
CVE-2025-22113 VULN-65358

Commits

CVE-2025-22121

7e3df38:

ext4: introduce ITAIL helper

jira VULN-65381
cve-pre CVE-2025-22121
commit-author Ye Bin <[email protected]>
commit 69f3a3039b0d0003de008659cafd5a1eaaa0a7a4

18ee55a:

ext4: fix out-of-bound read in ext4_xattr_inode_dec_ref_all()

jira VULN-65381
cve CVE-2025-22121
commit-author Ye Bin <[email protected]>
commit 5701875f9609b000d91351eaa6bfd97fe2f157f4

The mainline fix 5701875 conflicts without 69f3a30. The cve-pre is a previous commit right before 5701875 in kernel's history, in fact they were commited at the same time and have the same author, suggesting that it was a single solution split into two commits to keep their scope atomized.

CVE-2025-22113

73fc46f:

ext4: rename s_error_work to s_sb_upd_work

jira VULN-65358
cve-pre CVE-2025-22113
commit-author Theodore Ts'o <[email protected]>
commit bb15cea20f211e110150e528fca806f38d5789e0
upstream-diff |
  Ignored the changes to the `ext4_maybe_update_superblock()' function
  introduced by ff0722de896eb278fca193888d22278c28f2782c which is missing
  from ciqlts9_4 history and is not functionally neutral.

176f3e9:

ext4: define ext4_journal_destroy wrapper

jira VULN-65358
cve-pre CVE-2025-22113
commit-author Ojaswin Mujoo <[email protected]>
commit 5a02a6204ca37e7c22fbb55a789c503f05e8e89a

4f815fb:

ext4: avoid journaling sb update on error if journal is destroying

jira VULN-65358
cve CVE-2025-22113
commit-author Ojaswin Mujoo <[email protected]>
commit ce2f26e73783b4a7c46a86e3af5b5c8de0971790

Naive cherry-picking mainline fix ce2f26e resulted in conflicts in all edited places of the modified files fs/ext4/ext4.h, fs/ext4/ext4_jbd2.h, fs/ext4/super.c.

Commit 5a02a62 introduces the function ext4_journal_destroy(…) which is one of the subjects of change in the fix ce2f26e. The function doesn't introduce any new functionality not present before, only captures a recurring pattern in the fs/ext4/super.c file of destroying a sb journal object and nulling out its pointer afterwards. Adding it prevents conflicts in the fs/ext4/super.c.

Commit bb15cea is similarly functionally neutral with its symbols renaming change. Having the ext4_sb_info struct's field s_error_work renamed to s_sb_upd_work prevents conflicts in the fs/ext4/super.c file.

Commit ff0722d was required to have the bb15cea cherry-picked cleanly, as the latter was renaming the s_error_work symbol also in the ext4_maybe_update_superblock(…) function introduced by the former. It provides a simple mechanism to keep the disk superblock updated and the kilobytes written counter more precise as a result (see https://www.spinics.net/lists/linux-ext4/msg85865.html for the best description of the issue). Although it's small and local, present in the mainline for two years without major changes (thus stable), providing a fix for what seems to be a bug, not a feature, and allows for cherry-picking the required bb15cea cleanly, it was decided not to pick it, as that would require pulling in its bugfix ee6a12d too, increasing the solution complexity of a part which arguably already shouldn't be picked anyway due to its functional non-neutrality. The bb15cea cherry-picking conflict was resolved manually by ignoring the introduction of ext4_maybe_update_superblock(…) function.

The codebase prepared in such a way still conflicted due to ce2f26e not expecting the EXT4_MF_FS_ABORTED in the enum which it modified by adding the EXT4_MF_JOURNAL_DESTROY case. The EXT4_MF_FS_ABORTED was removed in 9525798 which wasn't backported to ciqlts9_4. Similarly to ff0722d it was considered to be included in the solution despite diverging functionally from the fix, but it required its own additional prerequisites which would have complicated the solution beyond acceptable limit. The conflict was resolved manually by simply keeping the EXT4_MF_FS_ABORTED member. The upstream-diff was omitted as this resolution didn't modify the upstream change in any way (the delta is the same) but dealt with the cherry-picking technicalities.

kABI check: passed

$ DEBUG=1 CVE=CVE-batch-4 ./ninja.sh _kabi_checked__x86_64--test--ciqlts9_4-CVE-batch-4

[0/1] Check ABI of kernel [ciqlts9_4-CVE-batch-4]
++ uname -m
+ python3 /data/src/ctrliq-github/kernel-dist-git-el-9.4/SOURCES/check-kabi -k /data/src/ctrliq-github/kernel-dist-git-el-9.4/SOURCES/Module.kabi_x86_64 -s vms/x86_64--build--ciqlts9_4/build_files/kernel-src-tree-ciqlts9_4-CVE-batch-4/Module.symvers
kABI check passed
+ touch state/kernels/ciqlts9_4-CVE-batch-4/x86_64/kabi_checked

Boot test: passed

boot-test.log

Kselftests: passed relative

Reference

kselftests–ciqlts9_4–run1.log

Patch

kselftests–ciqlts9_4-CVE-batch-4–run1.log

Comparison

The tests results are the same for the reference and the patch.

$ ktests.xsh diff kselftests*.log

Column    File
--------  -------------------------------------------
Status0   kselftests--ciqlts9_4--run1.log
Status1   kselftests--ciqlts9_4-CVE-batch-4--run1.log

TestCase                                               Status0  Status1  Summary
bpf:test_cgroup_storage                                pass     pass     same
bpf:test_lpm_map                                       pass     pass     same
bpf:test_lru_map                                       pass     pass     same
bpf:test_sock                                          pass     pass     same
bpf:test_sysctl                                        pass     pass     same
bpf:test_tag                                           pass     pass     same
bpf:test_tcpnotify_user                                pass     pass     same
bpf:test_verifier                                      fail     fail     same
breakpoints:breakpoint_test                            pass     pass     same
capabilities:test_execve                               pass     pass     same
clone3:clone3                                          pass     pass     same
clone3:clone3_cap_checkpoint_restore                   pass     pass     same
clone3:clone3_clear_sighand                            pass     pass     same
clone3:clone3_set_tid                                  pass     pass     same
cpu-hotplug:cpu-on-off-test.sh                         pass     pass     same
cpufreq:main.sh                                        fail     fail     same
drivers/dma-buf:udmabuf                                pass     pass     same
drivers/net/bonding:bond-arp-interval-causes-panic.sh  pass     pass     same
drivers/net/bonding:bond-break-lacpdu-tx.sh            fail     fail     same
drivers/net/bonding:bond-eth-type-change.sh            pass     pass     same
drivers/net/bonding:bond-lladdr-target.sh              pass     pass     same
drivers/net/bonding:bond_options.sh                    fail     fail     same
drivers/net/bonding:dev_addr_lists.sh                  pass     pass     same
drivers/net/bonding:mode-1-recovery-updelay.sh         pass     pass     same
drivers/net/bonding:mode-2-recovery-updelay.sh         pass     pass     same
drivers/net/team:dev_addr_lists.sh                     pass     pass     same
exec:binfmt_script                                     pass     pass     same
exec:execveat                                          pass     pass     same
exec:load_address_16777216                             fail     fail     same
exec:load_address_2097152                              pass     pass     same
exec:load_address_4096                                 pass     pass     same
exec:non-regular                                       fail     fail     same
exec:recursion-depth                                   pass     pass     same
filesystems/binderfs:binderfs_test                     fail     fail     same
filesystems/epoll:epoll_wakeup_test                    pass     pass     same
firmware:fw_run_tests.sh                               skip     skip     same
fpu:run_test_fpu.sh                                    skip     skip     same
fpu:test_fpu                                           pass     pass     same
ftrace:ftracetest                                      fail     fail     same
futex:run.sh                                           pass     pass     same
gpio:gpio-mockup.sh                                    fail     fail     same
intel_pstate:run.sh                                    pass     pass     same
iommu:iommufd                                          fail     fail     same
iommu:iommufd_fail_nth                                 pass     pass     same
ipc:msgque                                             pass     pass     same
ir:ir_loopback.sh                                      skip     skip     same
kcmp:kcmp_test                                         pass     pass     same
kexec:test_kexec_file_load.sh                          skip     skip     same
kexec:test_kexec_load.sh                               skip     skip     same
kvm:access_tracking_perf_test                          pass     pass     same
kvm:amx_test                                           fail     fail     same
kvm:cpuid_test                                         fail     fail     same
kvm:cr4_cpuid_sync_test                                fail     fail     same
kvm:debug_regs                                         fail     fail     same
kvm:demand_paging_test                                 pass     pass     same
kvm:dirty_log_page_splitting_test                      fail     fail     same
kvm:dirty_log_perf_test                                pass     pass     same
kvm:dirty_log_test                                     fail     fail     same
kvm:exit_on_emulation_failure_test                     fail     fail     same
kvm:fix_hypercall_test                                 fail     fail     same
kvm:get_msr_index_features                             fail     fail     same
kvm:guest_memfd_test                                   pass     pass     same
kvm:guest_print_test                                   pass     pass     same
kvm:hardware_disable_test                              pass     pass     same
kvm:hyperv_clock                                       fail     fail     same
kvm:hyperv_cpuid                                       fail     fail     same
kvm:hyperv_evmcs                                       fail     fail     same
kvm:hyperv_extended_hypercalls                         fail     fail     same
kvm:hyperv_features                                    fail     fail     same
kvm:hyperv_ipi                                         fail     fail     same
kvm:hyperv_svm_test                                    fail     fail     same
kvm:hyperv_tlb_flush                                   fail     fail     same
kvm:kvm_binary_stats_test                              pass     pass     same
kvm:kvm_clock_test                                     fail     fail     same
kvm:kvm_create_max_vcpus                               pass     pass     same
kvm:kvm_page_table_test                                pass     pass     same
kvm:kvm_pv_test                                        fail     fail     same
kvm:max_guest_memory_test                              pass     pass     same
kvm:max_vcpuid_cap_test                                fail     fail     same
kvm:memslot_modification_stress_test                   pass     pass     same
kvm:memslot_perf_test                                  pass     pass     same
kvm:mmio_warning_test                                  fail     fail     same
kvm:monitor_mwait_test                                 fail     fail     same
kvm:nested_exceptions_test                             fail     fail     same
kvm:nx_huge_pages_test.sh                              fail     fail     same
kvm:platform_info_test                                 fail     fail     same
kvm:pmu_event_filter_test                              fail     fail     same
kvm:private_mem_conversions_test                       fail     fail     same
kvm:private_mem_kvm_exits_test                         fail     fail     same
kvm:recalc_apic_map_test                               fail     fail     same
kvm:rseq_test                                          fail     fail     same
kvm:set_boot_cpu_id                                    fail     fail     same
kvm:set_memory_region_test                             pass     pass     same
kvm:set_sregs_test                                     fail     fail     same
kvm:sev_migrate_tests                                  fail     fail     same
kvm:smaller_maxphyaddr_emulation_test                  fail     fail     same
kvm:smm_test                                           fail     fail     same
kvm:state_test                                         fail     fail     same
kvm:steal_time                                         pass     pass     same
kvm:svm_int_ctl_test                                   fail     fail     same
kvm:svm_nested_shutdown_test                           fail     fail     same
kvm:svm_nested_soft_inject_test                        fail     fail     same
kvm:svm_vmcall_test                                    fail     fail     same
kvm:sync_regs_test                                     fail     fail     same
kvm:system_counter_offset_test                         pass     pass     same
kvm:triple_fault_event_test                            fail     fail     same
kvm:tsc_msrs_test                                      fail     fail     same
kvm:tsc_scaling_sync                                   fail     fail     same
kvm:ucna_injection_test                                fail     fail     same
kvm:userspace_io_test                                  fail     fail     same
kvm:userspace_msr_exit_test                            fail     fail     same
kvm:vmx_apic_access_test                               fail     fail     same
kvm:vmx_close_while_nested_test                        fail     fail     same
kvm:vmx_dirty_log_test                                 fail     fail     same
kvm:vmx_exception_with_invalid_guest_state             fail     fail     same
kvm:vmx_invalid_nested_guest_state                     fail     fail     same
kvm:vmx_msrs_test                                      fail     fail     same
kvm:vmx_nested_tsc_scaling_test                        fail     fail     same
kvm:vmx_pmu_caps_test                                  fail     fail     same
kvm:vmx_preemption_timer_test                          fail     fail     same
kvm:vmx_set_nested_state_test                          fail     fail     same
kvm:vmx_tsc_adjust_test                                fail     fail     same
kvm:xapic_ipi_test                                     fail     fail     same
kvm:xapic_state_test                                   fail     fail     same
kvm:xcr0_cpuid_test                                    fail     fail     same
kvm:xen_shinfo_test                                    fail     fail     same
kvm:xen_vmcall_test                                    fail     fail     same
kvm:xss_msr_test                                       fail     fail     same
landlock:base_test                                     fail     fail     same
landlock:fs_test                                       fail     fail     same
landlock:ptrace_test                                   fail     fail     same
lib:bitmap.sh                                          skip     skip     same
lib:prime_numbers.sh                                   pass     pass     same
lib:printf.sh                                          skip     skip     same
lib:scanf.sh                                           skip     skip     same
lib:strscpy.sh                                         skip     skip     same
livepatch:test-callbacks.sh                            pass     pass     same
livepatch:test-ftrace.sh                               pass     pass     same
livepatch:test-livepatch.sh                            pass     pass     same
livepatch:test-shadow-vars.sh                          pass     pass     same
livepatch:test-state.sh                                pass     pass     same
livepatch:test-sysfs.sh                                pass     pass     same
membarrier:membarrier_test_multi_thread                pass     pass     same
membarrier:membarrier_test_single_thread               pass     pass     same
memfd:memfd_test                                       pass     pass     same
memfd:run_fuse_test.sh                                 pass     pass     same
memfd:run_hugetlbfs_test.sh                            pass     pass     same
memory-hotplug:mem-on-off-test.sh                      pass     pass     same
mincore:mincore_selftest                               fail     fail     same
mount:run_nosymfollow.sh                               pass     pass     same
mount:run_unprivileged_remount.sh                      pass     pass     same
mqueue:mq_open_tests                                   pass     pass     same
mqueue:mq_perf_tests                                   pass     pass     same
nci:nci_dev                                            fail     fail     same
net/forwarding:bridge_locked_port.sh                   pass     pass     same
net/forwarding:bridge_mdb.sh                           skip     skip     same
net/forwarding:bridge_mdb_host.sh                      pass     pass     same
net/forwarding:bridge_mdb_max.sh                       skip     skip     same
net/forwarding:bridge_mdb_port_down.sh                 pass     pass     same
net/forwarding:bridge_mld.sh                           pass     pass     same
net/forwarding:bridge_port_isolation.sh                pass     pass     same
net/forwarding:bridge_sticky_fdb.sh                    pass     pass     same
net/forwarding:bridge_vlan_aware.sh                    pass     pass     same
net/forwarding:bridge_vlan_mcast.sh                    pass     pass     same
net/forwarding:bridge_vlan_unaware.sh                  pass     pass     same
net/forwarding:custom_multipath_hash.sh                fail     fail     same
net/forwarding:ethtool.sh                              skip     skip     same
net/forwarding:ethtool_extended_state.sh               skip     skip     same
net/forwarding:gre_custom_multipath_hash.sh            fail     fail     same
net/forwarding:gre_inner_v4_multipath.sh               pass     pass     same
net/forwarding:gre_multipath.sh                        pass     pass     same
net/forwarding:gre_multipath_nh.sh                     fail     fail     same
net/forwarding:gre_multipath_nh_res.sh                 fail     fail     same
net/forwarding:hw_stats_l3.sh                          skip     skip     same
net/forwarding:hw_stats_l3_gre.sh                      skip     skip     same
net/forwarding:ip6_forward_instats_vrf.sh              skip     skip     same
net/forwarding:ip6gre_custom_multipath_hash.sh         fail     fail     same
net/forwarding:ip6gre_flat.sh                          pass     pass     same
net/forwarding:ip6gre_flat_key.sh                      pass     pass     same
net/forwarding:ip6gre_flat_keys.sh                     pass     pass     same
net/forwarding:ip6gre_hier.sh                          pass     pass     same
net/forwarding:ip6gre_hier_key.sh                      pass     pass     same
net/forwarding:ip6gre_hier_keys.sh                     pass     pass     same
net/forwarding:ip6gre_inner_v4_multipath.sh            pass     pass     same
net/forwarding:ipip_flat_gre.sh                        pass     pass     same
net/forwarding:ipip_flat_gre_key.sh                    pass     pass     same
net/forwarding:ipip_flat_gre_keys.sh                   pass     pass     same
net/forwarding:ipip_hier_gre.sh                        pass     pass     same
net/forwarding:ipip_hier_gre_key.sh                    pass     pass     same
net/forwarding:local_termination.sh                    skip     skip     same
net/forwarding:loopback.sh                             skip     skip     same
net/forwarding:mirror_gre.sh                           pass     pass     same
net/forwarding:mirror_gre_bound.sh                     pass     pass     same
net/forwarding:mirror_gre_bridge_1d.sh                 pass     pass     same
net/forwarding:mirror_gre_bridge_1q.sh                 pass     pass     same
net/forwarding:mirror_gre_bridge_1q_lag.sh             pass     pass     same
net/forwarding:mirror_gre_changes.sh                   pass     pass     same
net/forwarding:mirror_gre_flower.sh                    pass     pass     same
net/forwarding:mirror_gre_lag_lacp.sh                  pass     pass     same
net/forwarding:mirror_gre_neigh.sh                     pass     pass     same
net/forwarding:mirror_gre_nh.sh                        pass     pass     same
net/forwarding:mirror_gre_vlan.sh                      pass     pass     same
net/forwarding:mirror_vlan.sh                          pass     pass     same
net/forwarding:no_forwarding.sh                        pass     pass     same
net/forwarding:pedit_dsfield.sh                        pass     pass     same
net/forwarding:pedit_ip.sh                             pass     pass     same
net/forwarding:pedit_l4port.sh                         pass     pass     same
net/forwarding:q_in_vni_ipv6.sh                        pass     pass     same
net/forwarding:router.sh                               skip     skip     same
net/forwarding:router_bridge.sh                        pass     pass     same
net/forwarding:router_bridge_1d.sh                     pass     pass     same
net/forwarding:router_bridge_pvid_vlan_upper.sh        pass     pass     same
net/forwarding:router_bridge_vlan.sh                   pass     pass     same
net/forwarding:router_bridge_vlan_upper.sh             pass     pass     same
net/forwarding:router_bridge_vlan_upper_pvid.sh        pass     pass     same
net/forwarding:router_broadcast.sh                     pass     pass     same
net/forwarding:router_mpath_nh.sh                      fail     fail     same
net/forwarding:router_mpath_nh_res.sh                  pass     pass     same
net/forwarding:router_multicast.sh                     skip     skip     same
net/forwarding:router_multipath.sh                     fail     fail     same
net/forwarding:router_nh.sh                            pass     pass     same
net/forwarding:router_vid_1.sh                         pass     pass     same
net/forwarding:skbedit_priority.sh                     pass     pass     same
net/forwarding:tc_chains.sh                            pass     pass     same
net/forwarding:tc_flower.sh                            pass     pass     same
net/forwarding:tc_flower_cfm.sh                        fail     fail     same
net/forwarding:tc_flower_l2_miss.sh                    fail     fail     same
net/forwarding:tc_flower_router.sh                     pass     pass     same
net/forwarding:tc_mpls_l2vpn.sh                        pass     pass     same
net/forwarding:tc_shblocks.sh                          pass     pass     same
net/forwarding:tc_tunnel_key.sh                        skip     skip     same
net/forwarding:tc_vlan_modify.sh                       pass     pass     same
net/forwarding:vxlan_asymmetric.sh                     pass     pass     same
net/forwarding:vxlan_asymmetric_ipv6.sh                pass     pass     same
net/forwarding:vxlan_bridge_1d.sh                      pass     pass     same
net/forwarding:vxlan_bridge_1d_port_8472.sh            pass     pass     same
net/forwarding:vxlan_bridge_1d_port_8472_ipv6.sh       pass     pass     same
net/forwarding:vxlan_bridge_1q.sh                      pass     pass     same
net/forwarding:vxlan_bridge_1q_ipv6.sh                 pass     pass     same
net/forwarding:vxlan_bridge_1q_port_8472.sh            pass     pass     same
net/forwarding:vxlan_bridge_1q_port_8472_ipv6.sh       pass     pass     same
net/forwarding:vxlan_symmetric.sh                      pass     pass     same
net/forwarding:vxlan_symmetric_ipv6.sh                 pass     pass     same
net/hsr:hsr_ping.sh                                    fail     fail     same
net/mptcp:diag.sh                                      pass     pass     same
net/mptcp:mptcp_connect.sh                             pass     pass     same
net/mptcp:mptcp_sockopt.sh                             pass     pass     same
net/mptcp:pm_netlink.sh                                pass     pass     same
net:altnames.sh                                        pass     pass     same
net:bareudp.sh                                         pass     pass     same
net:big_tcp.sh                                         skip     skip     same
net:cmsg_so_mark.sh                                    pass     pass     same
net:devlink_port_split.py                              skip     skip     same
net:drop_monitor_tests.sh                              skip     skip     same
net:fcnal-test.sh                                      skip     skip     same
net:fib-onlink-tests.sh                                pass     pass     same
net:fib_nexthop_multiprefix.sh                         pass     pass     same
net:fib_nexthop_nongw.sh                               pass     pass     same
net:fib_rule_tests.sh                                  pass     pass     same
net:fib_tests.sh                                       fail     fail     same
net:fin_ack_lat.sh                                     pass     pass     same
net:gre_gso.sh                                         skip     skip     same
net:icmp.sh                                            fail     fail     same
net:icmp_redirect.sh                                   pass     pass     same
net:io_uring_zerocopy_tx.sh                            fail     fail     same
net:ip6_gre_headroom.sh                                pass     pass     same
net:ipv6_flowlabel.sh                                  pass     pass     same
net:l2_tos_ttl_inherit.sh                              skip     skip     same
net:l2tp.sh                                            pass     pass     same
net:msg_zerocopy.sh                                    pass     pass     same
net:netdevice.sh                                       pass     pass     same
net:pmtu.sh                                            fail     fail     same
net:psock_snd.sh                                       pass     pass     same
net:reuseaddr_ports_exhausted.sh                       pass     pass     same
net:reuseport_bpf                                      pass     pass     same
net:reuseport_bpf_cpu                                  pass     pass     same
net:reuseport_bpf_numa                                 pass     pass     same
net:reuseport_dualstack                                pass     pass     same
net:route_localnet.sh                                  pass     pass     same
net:rps_default_mask.sh                                pass     pass     same
net:rtnetlink.sh                                       skip     skip     same
net:run_afpackettests                                  pass     pass     same
net:run_netsocktests                                   pass     pass     same
net:rxtimestamp.sh                                     pass     pass     same
net:so_txtime.sh                                       pass     pass     same
net:srv6_end_next_csid_l3vpn_test.sh                   pass     pass     same
net:srv6_hencap_red_l3vpn_test.sh                      pass     pass     same
net:srv6_hl2encap_red_l2vpn_test.sh                    pass     pass     same
net:stress_reuseport_listen.sh                         pass     pass     same
net:tcp_fastopen_backup_key.sh                         pass     pass     same
net:test_blackhole_dev.sh                              fail     fail     same
net:test_bpf.sh                                        pass     pass     same
net:test_bridge_neigh_suppress.sh                      skip     skip     same
net:test_vxlan_fdb_changelink.sh                       pass     pass     same
net:test_vxlan_under_vrf.sh                            pass     pass     same
net:tls                                                pass     pass     same
net:traceroute.sh                                      pass     pass     same
net:udpgro.sh                                          fail     fail     same
net:udpgro_bench.sh                                    fail     fail     same
net:udpgso.sh                                          pass     pass     same
net:unicast_extensions.sh                              pass     pass     same
net:veth.sh                                            fail     fail     same
net:vrf-xfrm-tests.sh                                  pass     pass     same
net:vrf_route_leaking.sh                               pass     pass     same
net:vrf_strict_mode_test.sh                            pass     pass     same
netfilter:bridge_brouter.sh                            skip     skip     same
netfilter:conntrack_icmp_related.sh                    fail     fail     same
netfilter:conntrack_tcp_unreplied.sh                   fail     fail     same
netfilter:conntrack_vrf.sh                             skip     skip     same
netfilter:ipip-conntrack-mtu.sh                        skip     skip     same
netfilter:ipvs.sh                                      skip     skip     same
netfilter:nf_nat_edemux.sh                             skip     skip     same
netfilter:nft_audit.sh                                 fail     fail     same
netfilter:nft_concat_range.sh                          fail     fail     same
netfilter:nft_conntrack_helper.sh                      skip     skip     same
netfilter:nft_fib.sh                                   skip     skip     same
netfilter:nft_flowtable.sh                             fail     fail     same
netfilter:nft_meta.sh                                  pass     pass     same
netfilter:nft_nat.sh                                   skip     skip     same
netfilter:nft_queue.sh                                 skip     skip     same
netfilter:rpath.sh                                     pass     pass     same
nsfs:owner                                             pass     pass     same
nsfs:pidns                                             pass     pass     same
pid_namespace:regression_enomem                        pass     pass     same
pidfd:pidfd_fdinfo_test                                pass     pass     same
pidfd:pidfd_getfd_test                                 pass     pass     same
pidfd:pidfd_open_test                                  pass     pass     same
pidfd:pidfd_poll_test                                  pass     pass     same
pidfd:pidfd_setns_test                                 pass     pass     same
pidfd:pidfd_test                                       pass     pass     same
pidfd:pidfd_wait                                       pass     pass     same
proc:fd-001-lookup                                     pass     pass     same
proc:fd-002-posix-eq                                   pass     pass     same
proc:fd-003-kthread                                    pass     pass     same
proc:proc-fsconfig-hidepid                             pass     pass     same
proc:proc-loadavg-001                                  pass     pass     same
proc:proc-multiple-procfs                              pass     pass     same
proc:proc-self-map-files-001                           pass     pass     same
proc:proc-self-map-files-002                           pass     pass     same
proc:proc-self-syscall                                 pass     pass     same
proc:proc-self-wchan                                   pass     pass     same
proc:proc-subset-pid                                   pass     pass     same
proc:proc-uptime-002                                   pass     pass     same
proc:read                                              pass     pass     same
proc:self                                              pass     pass     same
proc:setns-dcache                                      pass     pass     same
proc:setns-sysvipc                                     pass     pass     same
proc:thread-self                                       pass     pass     same
pstore:pstore_post_reboot_tests                        skip     skip     same
pstore:pstore_tests                                    fail     fail     same
ptrace:get_syscall_info                                pass     pass     same
ptrace:peeksiginfo                                     pass     pass     same
ptrace:vmaccess                                        fail     fail     same
rlimits:rlimits-per-userns                             pass     pass     same
rseq:basic_percpu_ops_test                             pass     pass     same
rseq:basic_test                                        pass     pass     same
rseq:param_test                                        pass     pass     same
rseq:param_test_benchmark                              pass     pass     same
rseq:param_test_compare_twice                          pass     pass     same
rseq:run_param_test.sh                                 pass     pass     same
seccomp:seccomp_benchmark                              pass     pass     same
seccomp:seccomp_bpf                                    pass     pass     same
sgx:test_sgx                                           fail     fail     same
sigaltstack:sas                                        pass     pass     same
size:get_size                                          pass     pass     same
splice:default_file_splice_read.sh                     pass     pass     same
splice:short_splice_read.sh                            fail     fail     same
static_keys:test_static_keys.sh                        skip     skip     same
syscall_user_dispatch:sud_benchmark                    pass     pass     same
syscall_user_dispatch:sud_test                         pass     pass     same
tc-testing:tdc.sh                                      fail     fail     same
tdx:tdx_guest_test                                     fail     fail     same
timens:clock_nanosleep                                 pass     pass     same
timens:exec                                            pass     pass     same
timens:futex                                           pass     pass     same
timens:procfs                                          pass     pass     same
timens:timens                                          pass     pass     same
timens:timer                                           pass     pass     same
timens:timerfd                                         pass     pass     same
timens:vfork_exec                                      pass     pass     same
timers:inconsistency-check                             pass     pass     same
timers:mqueue-lat                                      pass     pass     same
timers:nanosleep                                       pass     pass     same
timers:nsleep-lat                                      pass     pass     same
timers:posix_timers                                    pass     pass     same
timers:rtcpie                                          pass     pass     same
timers:set-timer-lat                                   pass     pass     same
timers:threadtest                                      pass     pass     same
tmpfs:bug-link-o-tmpfile                               pass     pass     same
tpm2:test_smoke.sh                                     skip     skip     same
tpm2:test_space.sh                                     skip     skip     same
tty:tty_tstamp_update                                  skip     skip     same
vDSO:vdso_standalone_test_x86                          pass     pass     same
vDSO:vdso_test_abi                                     pass     pass     same
vDSO:vdso_test_clock_getres                            pass     pass     same
vDSO:vdso_test_correctness                             pass     pass     same
vDSO:vdso_test_getcpu                                  pass     pass     same
vDSO:vdso_test_gettimeofday                            pass     pass     same
x86:amx_64                                             fail     fail     same
x86:check_initial_reg_state_64                         pass     pass     same
x86:corrupt_xstate_header_64                           fail     fail     same
x86:fsgsbase_64                                        fail     fail     same
x86:fsgsbase_restore_64                                fail     fail     same
x86:ioperm_64                                          pass     pass     same
x86:iopl_64                                            pass     pass     same
x86:lam_64                                             fail     fail     same
x86:mov_ss_trap_64                                     fail     fail     same
x86:sigaltstack_64                                     fail     fail     same
x86:sigreturn_64                                       fail     fail     same
x86:single_step_syscall_64                             fail     fail     same
x86:syscall_arg_fault_64                               fail     fail     same
x86:syscall_nt_64                                      pass     pass     same
x86:syscall_numbering_64                               fail     fail     same
x86:sysret_rip_64                                      fail     fail     same
x86:sysret_ss_attrs_64                                 pass     pass     same
x86:test_mremap_vdso_64                                pass     pass     same
x86:test_vsyscall_64                                   pass     pass     same
zram:zram.sh                                           pass     pass     same

jira VULN-65381
cve-pre CVE-2025-22121
commit-author Ye Bin <[email protected]>
commit 69f3a30

Introduce ITAIL helper to get the bound of xattr in inode.

	Signed-off-by: Ye Bin <[email protected]>
	Reviewed-by: Jan Kara <[email protected]>
Link: https://patch.msgid.link/[email protected]
	Signed-off-by: Theodore Ts'o <[email protected]>
(cherry picked from commit 69f3a30)
	Signed-off-by: Marcin Wcisło <[email protected]>
jira VULN-65381
cve CVE-2025-22121
commit-author Ye Bin <[email protected]>
commit 5701875

There's issue as follows:
BUG: KASAN: use-after-free in ext4_xattr_inode_dec_ref_all+0x6ff/0x790
Read of size 4 at addr ffff88807b003000 by task syz-executor.0/15172

CPU: 3 PID: 15172 Comm: syz-executor.0
Call Trace:
 __dump_stack lib/dump_stack.c:82 [inline]
 dump_stack+0xbe/0xfd lib/dump_stack.c:123
 print_address_description.constprop.0+0x1e/0x280 mm/kasan/report.c:400
 __kasan_report.cold+0x6c/0x84 mm/kasan/report.c:560
 kasan_report+0x3a/0x50 mm/kasan/report.c:585
 ext4_xattr_inode_dec_ref_all+0x6ff/0x790 fs/ext4/xattr.c:1137
 ext4_xattr_delete_inode+0x4c7/0xda0 fs/ext4/xattr.c:2896
 ext4_evict_inode+0xb3b/0x1670 fs/ext4/inode.c:323
 evict+0x39f/0x880 fs/inode.c:622
 iput_final fs/inode.c:1746 [inline]
 iput fs/inode.c:1772 [inline]
 iput+0x525/0x6c0 fs/inode.c:1758
 ext4_orphan_cleanup fs/ext4/super.c:3298 [inline]
 ext4_fill_super+0x8c57/0xba40 fs/ext4/super.c:5300
 mount_bdev+0x355/0x410 fs/super.c:1446
 legacy_get_tree+0xfe/0x220 fs/fs_context.c:611
 vfs_get_tree+0x8d/0x2f0 fs/super.c:1576
 do_new_mount fs/namespace.c:2983 [inline]
 path_mount+0x119a/0x1ad0 fs/namespace.c:3316
 do_mount+0xfc/0x110 fs/namespace.c:3329
 __do_sys_mount fs/namespace.c:3540 [inline]
 __se_sys_mount+0x219/0x2e0 fs/namespace.c:3514
 do_syscall_64+0x33/0x40 arch/x86/entry/common.c:46
 entry_SYSCALL_64_after_hwframe+0x67/0xd1

Memory state around the buggy address:
 ffff88807b002f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 ffff88807b002f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>ffff88807b003000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
                   ^
 ffff88807b003080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 ffff88807b003100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

Above issue happens as ext4_xattr_delete_inode() isn't check xattr
is valid if xattr is in inode.
To solve above issue call xattr_check_inode() check if xattr if valid
in inode. In fact, we can directly verify in ext4_iget_extra_inode(),
so that there is no divergent verification.

Fixes: e50e512 ("ext4: xattr-in-inode support")
	Signed-off-by: Ye Bin <[email protected]>
	Reviewed-by: Jan Kara <[email protected]>
Link: https://patch.msgid.link/[email protected]
	Signed-off-by: Theodore Ts'o <[email protected]>
(cherry picked from commit 5701875)
	Signed-off-by: Marcin Wcisło <[email protected]>
jira VULN-65358
cve-pre CVE-2025-22113
commit-author Theodore Ts'o <[email protected]>
commit bb15cea
upstream-diff |
  Ignored the changes to the `ext4_maybe_update_superblock()' function
  introduced by ff0722d which is missing
  from ciqlts9_4 history and is not functionally neutral.

The most common use that s_error_work will get scheduled is now the
periodic update of the superblock.  So rename it to s_sb_upd_work.

Also rename the function flush_stashed_error_work() to
update_super_work().

	Signed-off-by: Theodore Ts'o <[email protected]>
(cherry picked from commit bb15cea)
	Signed-off-by: Marcin Wcisło <[email protected]>
jira VULN-65358
cve-pre CVE-2025-22113
commit-author Ojaswin Mujoo <[email protected]>
commit 5a02a62

Define an ext4 wrapper over jbd2_journal_destroy to make sure we
have consistent behavior during journal destruction. This will also
come useful in the next patch where we add some ext4 specific logic
in the destroy path.

	Reviewed-by: Jan Kara <[email protected]>
	Reviewed-by: Baokun Li <[email protected]>
	Signed-off-by: Ojaswin Mujoo <[email protected]>
Link: https://patch.msgid.link/c3ba78c5c419757e6d5f2d8ebb4a8ce9d21da86a.1742279837.git.ojaswin@linux.ibm.com
	Signed-off-by: Theodore Ts'o <[email protected]>
(cherry picked from commit 5a02a62)
	Signed-off-by: Marcin Wcisło <[email protected]>
jira VULN-65358
cve CVE-2025-22113
commit-author Ojaswin Mujoo <[email protected]>
commit ce2f26e

Presently we always BUG_ON if trying to start a transaction on a journal marked
with JBD2_UNMOUNT, since this should never happen. However, while ltp running
stress tests, it was observed that in case of some error handling paths, it is
possible for update_super_work to start a transaction after the journal is
destroyed eg:

(umount)
ext4_kill_sb
  kill_block_super
    generic_shutdown_super
      sync_filesystem /* commits all txns */
      evict_inodes
        /* might start a new txn */
      ext4_put_super
	flush_work(&sbi->s_sb_upd_work) /* flush the workqueue */
        jbd2_journal_destroy
          journal_kill_thread
            journal->j_flags |= JBD2_UNMOUNT;
          jbd2_journal_commit_transaction
            jbd2_journal_get_descriptor_buffer
              jbd2_journal_bmap
                ext4_journal_bmap
                  ext4_map_blocks
                    ...
                    ext4_inode_error
                      ext4_handle_error
                        schedule_work(&sbi->s_sb_upd_work)

                                               /* work queue kicks in */
                                               update_super_work
                                                 jbd2_journal_start
                                                   start_this_handle
                                                     BUG_ON(journal->j_flags &
                                                            JBD2_UNMOUNT)

Hence, introduce a new mount flag to indicate journal is destroying and only do
a journaled (and deferred) update of sb if this flag is not set. Otherwise, just
fallback to an un-journaled commit.

Further, in the journal destroy path, we have the following sequence:

  1. Set mount flag indicating journal is destroying
  2. force a commit and wait for it
  3. flush pending sb updates

This sequence is important as it ensures that, after this point, there is no sb
update that might be journaled so it is safe to update the sb outside the
journal. (To avoid race discussed in 2d01ddc)

Also, we don't need a similar check in ext4_grp_locked_error since it is only
called from mballoc and AFAICT it would be always valid to schedule work here.

Fixes: 2d01ddc ("ext4: save error info to sb through journal if available")
	Reported-by: Mahesh Kumar <[email protected]>
	Signed-off-by: Ojaswin Mujoo <[email protected]>
	Reviewed-by: Jan Kara <[email protected]>
Link: https://patch.msgid.link/9613c465d6ff00cd315602f99283d5f24018c3f7.1742279837.git.ojaswin@linux.ibm.com
	Signed-off-by: Theodore Ts'o <[email protected]>
(cherry picked from commit ce2f26e)
	Signed-off-by: Marcin Wcisło <[email protected]>
Copy link
Collaborator

@PlaidCat PlaidCat left a comment

Choose a reason for hiding this comment

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

:shipit:

Copy link
Collaborator

@bmastbergen bmastbergen left a comment

Choose a reason for hiding this comment

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

🥌

@PlaidCat PlaidCat merged commit 9d23e72 into ctrliq:ciqlts9_4 Sep 18, 2025
4 of 5 checks passed
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.

3 participants