Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kernel-source for openSUSE:Factory checked in at 2024-04-03 17:18:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kernel-source (Old) and /work/SRC/openSUSE:Factory/.kernel-source.new.1905 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kernel-source" Wed Apr 3 17:18:12 2024 rev:726 rq:1164073 version:6.8.2 Changes: -------- --- /work/SRC/openSUSE:Factory/kernel-source/dtb-aarch64.changes 2024-03-19 17:29:30.857648855 +0100 +++ /work/SRC/openSUSE:Factory/.kernel-source.new.1905/dtb-aarch64.changes 2024-04-03 17:18:14.156676695 +0200 @@ -1,0 +2,1268 @@ +Tue Apr 2 11:38:08 CEST 2024 - jsl...@suse.cz + +- Bluetooth: hci_sync: Fix not checking error on + hci_cmd_sync_cancel_sync (bluetooth-fix). +- commit 2eb0f0f + +------------------------------------------------------------------- +Tue Apr 2 11:26:01 CEST 2024 - jsl...@suse.cz + +- Revert "io_uring: remove unconditional looping in local + task_work handling" (liburing_failure). +- commit 5b857cb + +------------------------------------------------------------------- +Thu Mar 28 14:37:37 CET 2024 - msucha...@suse.de + +- powerpc/crypto/chacha-p10: Fix failure on non Power10 + (boo#1218114). +- commit 9b2d264 + +------------------------------------------------------------------- +Thu Mar 28 06:45:11 CET 2024 - jsl...@suse.cz + +- Linux 6.8.2 (bsc#1012628). +- do_sys_name_to_handle(): use kzalloc() to fix kernel-infoleak + (bsc#1012628). +- workqueue.c: Increase workqueue name length (bsc#1012628). +- workqueue: Move pwq->max_active to wq->max_active (bsc#1012628). +- workqueue: Factor out pwq_is_empty() (bsc#1012628). +- workqueue: Replace pwq_activate_inactive_work() with + [__]pwq_activate_work() (bsc#1012628). +- workqueue: Move nr_active handling into helpers (bsc#1012628). +- workqueue: Make wq_adjust_max_active() round-robin pwqs while + activating (bsc#1012628). +- workqueue: RCU protect wq->dfl_pwq and implement accessors + for it (bsc#1012628). +- workqueue: Introduce struct wq_node_nr_active (bsc#1012628). +- workqueue: Implement system-wide nr_active enforcement for + unbound workqueues (bsc#1012628). +- workqueue: Don't call cpumask_test_cpu() with -1 CPU in + wq_update_node_max_active() (bsc#1012628). +- iomap: clear the per-folio dirty bits on all writeback failures + (bsc#1012628). +- fs: Fix rw_hint validation (bsc#1012628). +- io_uring: remove looping around handling traditional task_work + (bsc#1012628). +- io_uring: remove unconditional looping in local task_work + handling (bsc#1012628). +- s390/dasd: Use dev_*() for device log messages (bsc#1012628). +- s390/dasd: fix double module refcount decrement (bsc#1012628). +- fs/hfsplus: use better @opf description (bsc#1012628). +- md: fix kmemleak of rdev->serial (bsc#1012628). +- rcu/exp: Fix RCU expedited parallel grace period kworker + allocation failure recovery (bsc#1012628). +- rcu/exp: Handle RCU expedited grace period kworker allocation + failure (bsc#1012628). +- nbd: null check for nla_nest_start (bsc#1012628). +- fs/select: rework stack allocation hack for clang (bsc#1012628). +- block: fix deadlock between bd_link_disk_holder and partition + scan (bsc#1012628). +- md: Don't clear MD_CLOSING when the raid is about to stop + (bsc#1012628). +- kunit: Setup DMA masks on the kunit device (bsc#1012628). +- ovl: Always reject mounting over case-insensitive directories + (bsc#1012628). +- kunit: test: Log the correct filter string in executor_test + (bsc#1012628). +- lib/cmdline: Fix an invalid format specifier in an assertion + msg (bsc#1012628). +- lib: memcpy_kunit: Fix an invalid format specifier in an + assertion msg (bsc#1012628). +- time: test: Fix incorrect format specifier (bsc#1012628). +- rtc: test: Fix invalid format specifier (bsc#1012628). +- net: test: Fix printf format specifier in skb_segment kunit test + (bsc#1012628). +- drm/xe/tests: Fix printf format specifiers in xe_migrate test + (bsc#1012628). +- drm: tests: Fix invalid printf format specifiers in KUnit tests + (bsc#1012628). +- md/raid1: factor out helpers to add rdev to conf (bsc#1012628). +- md/raid1: record nonrot rdevs while adding/removing rdevs to + conf (bsc#1012628). +- md/raid1: fix choose next idle in read_balance() (bsc#1012628). +- io_uring/net: unify how recvmsg and sendmsg copy in the msghdr + (bsc#1012628). +- io_uring/net: move receive multishot out of the generic msghdr + path (bsc#1012628). +- io_uring/net: fix overflow check in io_recvmsg_mshot_prep() + (bsc#1012628). +- nvme: host: fix double-free of struct nvme_id_ns in + ns_update_nuse() (bsc#1012628). +- x86/mm: Ensure input to pfn_to_kaddr() is treated as a 64-bit + type (bsc#1012628). +- x86/resctrl: Remove hard-coded memory bandwidth limit + (bsc#1012628). +- x86/resctrl: Read supported bandwidth sources from CPUID + (bsc#1012628). +- x86/resctrl: Implement new mba_MBps throttling heuristic + (bsc#1012628). +- x86/sme: Fix memory encryption setting if enabled by default + and not overridden (bsc#1012628). +- timekeeping: Fix cross-timestamp interpolation on counter wrap + (bsc#1012628). +- timekeeping: Fix cross-timestamp interpolation corner case + decision (bsc#1012628). +- timekeeping: Fix cross-timestamp interpolation for non-x86 + (bsc#1012628). +- x86/asm: Remove the __iomem annotation of movdir64b()'s dst + argument (bsc#1012628). +- sched/fair: Take the scheduling domain into account in + select_idle_smt() (bsc#1012628). +- sched/fair: Take the scheduling domain into account in + select_idle_core() (bsc#1012628). +- wifi: b43: Stop/wake correct queue in DMA Tx path when QoS is + disabled (bsc#1012628). +- wifi: b43: Stop/wake correct queue in PIO Tx path when QoS is + disabled (bsc#1012628). +- wifi: b43: Stop correct queue in DMA worker when QoS is disabled + (bsc#1012628). +- wifi: b43: Disable QoS for bcm4331 (bsc#1012628). +- wifi: wilc1000: fix declarations ordering (bsc#1012628). +- wifi: wilc1000: fix RCU usage in connect path (bsc#1012628). +- wifi: ath11k: add support to select 6 GHz regulatory type + (bsc#1012628). +- wifi: ath11k: store cur_regulatory_info for each radio + (bsc#1012628). +- wifi: ath11k: fix a possible dead lock caused by ab->base_lock + (bsc#1012628). +- wifi: rtl8xxxu: add cancel_work_sync() for c2hcmd_work + (bsc#1012628). +- wifi: wilc1000: do not realloc workqueue everytime an interface + is added (bsc#1012628). +- wifi: wilc1000: fix multi-vif management when deleting a vif + (bsc#1012628). +- wifi: mwifiex: debugfs: Drop unnecessary error check for + debugfs_create_dir() (bsc#1012628). +- ARM: dts: renesas: r8a73a4: Fix external clocks and clock rate + (bsc#1012628). +- arm64: dts: qcom: x1e80100: drop qcom,drv-count (bsc#1012628). +- arm64: dts: qcom: sc8180x: Hook up VDD_CX as GCC parent domain + (bsc#1012628). +- arm64: dts: qcom: sc8180x: Fix up big CPU idle state entry + latency (bsc#1012628). +- arm64: dts: qcom: sc8180x: Add missing CPU off state + (bsc#1012628). +- arm64: dts: qcom: sc8180x: Fix eDP PHY power-domains + (bsc#1012628). +- arm64: dts: qcom: sc8180x: Don't hold MDP core clock at FMAX + (bsc#1012628). +- arm64: dts: qcom: sc8180x: Require LOW_SVS vote for MMCX if + DISPCC is on (bsc#1012628). +- arm64: dts: qcom: sc8180x: Add missing CPU<->MDP_CFG path + (bsc#1012628). +- arm64: dts: qcom: sc8180x: Shrink aoss_qmp register space size + (bsc#1012628). +- cpufreq: brcmstb-avs-cpufreq: add check for cpufreq_cpu_get's + return value (bsc#1012628). +- cpufreq: mediatek-hw: Wait for CPU supplies before probing + (bsc#1012628). +- sock_diag: annotate data-races around sock_diag_handlers[family] + (bsc#1012628). +- inet_diag: annotate data-races around inet_diag_table[] + (bsc#1012628). +- bpftool: Silence build warning about calloc() (bsc#1012628). +- selftests/bpf: Fix potential premature unload in bpf_testmod + (bsc#1012628). +- libbpf: Apply map_set_def_max_entries() for inner_maps on + creation (bsc#1012628). +- selftest/bpf: Add map_in_maps with BPF_MAP_TYPE_PERF_EVENT_ARRAY + values (bsc#1012628). +- bpftool: Fix wrong free call in do_show_link (bsc#1012628). +- wifi: ath12k: Fix issues in channel list update (bsc#1012628). +- selftests/bpf: Fix the flaky tc_redirect_dtime test + (bsc#1012628). +- selftests/bpf: Wait for the netstamp_needed_key static key to + be turned on (bsc#1012628). +- wifi: cfg80211: add RNR with reporting AP information + (bsc#1012628). +- wifi: mac80211: use deflink and fix typo in link ID check + (bsc#1012628). +- wifi: iwlwifi: change link id in time event to s8 (bsc#1012628). +- af_unix: Annotate data-race of gc_in_progress in + wait_for_unix_gc() (bsc#1012628). +- arm64: dts: qcom: sm8450: Add missing interconnects to serial + (bsc#1012628). +- soc: qcom: socinfo: rename PM2250 to PM4125 (bsc#1012628). +- arm64: dts: qcom: sc7280: Add static properties to cryptobam + (bsc#1012628). +- arm64: dts: qcom: qcm6490-fairphone-fp5: Add missing + reserved-memory (bsc#1012628). +- arm64: dts: qcom: sdm845-oneplus-common: improve DAI node naming + (bsc#1012628). +- arm64: dts: qcom: rename PM2250 to PM4125 (bsc#1012628). +- cpufreq: mediatek-hw: Don't error out if supply is not found + (bsc#1012628). +- libbpf: Fix faccessat() usage on Android (bsc#1012628). +- libbpf: fix __arg_ctx type enforcement for perf_event programs + (bsc#1012628). +- pmdomain: qcom: rpmhpd: Drop SA8540P gfx.lvl (bsc#1012628). +- arm64: dts: qcom: sa8540p: Drop gfx.lvl as power-domain for + gpucc (bsc#1012628). +- arm64: dts: renesas: r8a779g0: Restore sort order (bsc#1012628). +- arm64: dts: renesas: r8a779g0: Add missing SCIF_CLK2 + (bsc#1012628). +- selftests/bpf: Disable IPv6 for lwt_redirect test (bsc#1012628). +- arm64: dts: imx8mm-kontron: Disable pullups for I2C signals + on OSM-S i.MX8MM (bsc#1012628). +- arm64: dts: imx8mm-kontron: Disable pullups for I2C signals + on SL/BL i.MX8MM (bsc#1012628). +- arm64: dts: imx8mm-kontron: Disable pullups for onboard UART + signals on BL OSM-S board (bsc#1012628). +- arm64: dts: imx8mm-kontron: Disable pullups for onboard UART + signals on BL board (bsc#1012628). +- arm64: dts: imx8mm-kontron: Disable pull resistors for SD card + signals on BL OSM-S board (bsc#1012628). +- arm64: dts: imx8mm-kontron: Disable pull resistors for SD card + signals on BL board (bsc#1012628). +- arm64: dts: imx8mm-kontron: Fix interrupt for RTC on OSM-S + i.MX8MM module (bsc#1012628). +- arm64: dts: imx8qm: Align edma3 power-domains resources + indentation (bsc#1012628). +- arm64: dts: imx8qm: Correct edma3 power-domains and interrupt + numbers (bsc#1012628). +- libbpf: Add missing LIBBPF_API annotation to + libbpf_set_memlock_rlim API (bsc#1012628). +- wifi: ath9k: delay all of ath9k_wmi_event_tasklet() until init + is complete (bsc#1012628). +- wifi: ath11k: change to move WMI_VDEV_PARAM_SET_HEMU_MODE + before WMI_PEER_ASSOC_CMDID (bsc#1012628). +- wifi: ath12k: fix fetching MCBC flag for QCN9274 (bsc#1012628). +- wifi: iwlwifi: mvm: report beacon protection failures + (bsc#1012628). +- wifi: iwlwifi: dbg-tlv: ensure NUL termination (bsc#1012628). +- wifi: iwlwifi: acpi: fix WPFC reading (bsc#1012628). +- wifi: iwlwifi: mvm: initialize rates in FW earlier + (bsc#1012628). +- wifi: iwlwifi: fix EWRD table validity check (bsc#1012628). +- wifi: iwlwifi: mvm: d3: fix IPN byte order (bsc#1012628). +- wifi: iwlwifi: always have 'uats_enabled' (bsc#1012628). +- wifi: iwlwifi: mvm: fix the TLC command after ADD_STA + (bsc#1012628). +- wifi: iwlwifi: read BIOS PNVM only for non-Intel SKU + (bsc#1012628). +- gpio: vf610: allow disabling the vf610 driver (bsc#1012628). +- selftests/bpf: trace_helpers.c: do not use poisoned type + (bsc#1012628). +- bpf: make sure scalar args don't accept __arg_nonnull tag + (bsc#1012628). +- bpf: don't emit warnings intended for global subprogs for + static subprogs (bsc#1012628). +- arm64: dts: imx8mm-venice-gw71xx: fix USB OTG VBUS + (bsc#1012628). +- pwm: atmel-hlcdc: Fix clock imbalance related to suspend support + (bsc#1012628). +- net: blackhole_dev: fix build warning for ethh set but not used + (bsc#1012628). +- spi: consolidate setting message->spi (bsc#1012628). +- spi: move split xfers for CS_WORD emulation (bsc#1012628). +- arm64: dts: ti: k3-am62p5-sk: Enable CPSW MDIO node + (bsc#1012628). +- arm64: dts: ti: k3-j721s2: Fix power domain for VTM node + (bsc#1012628). +- arm64: dts: ti: k3-j784s4: Fix power domain for VTM node + (bsc#1012628). +- wifi: ath11k: initialize rx_mcs_80 and rx_mcs_160 before use + (bsc#1012628). +- wifi: libertas: fix some memleaks in lbs_allocate_cmd_buffer() + (bsc#1012628). +- arm64: dts: ti: k3-am69-sk: remove assigned-clock-parents for + unused VP (bsc#1012628). +- libbpf: fix return value for PERF_EVENT __arg_ctx type fix up + check (bsc#1012628). +- arm64: dts: ti: k3-am62p-mcu/wakeup: Disable MCU and wakeup + R5FSS nodes (bsc#1012628). +- arm64: dts: qcom: x1e80100-qcp: Fix supplies for LDOs 3E and 2J + (bsc#1012628). +- libbpf: Use OPTS_SET() macro in bpf_xdp_query() (bsc#1012628). +- wifi: wfx: fix memory leak when starting AP (bsc#1012628). +- arm64: dts: qcom: qcm2290: declare VLS CLAMP register for USB3 + PHY (bsc#1012628). +- arm64: dts: qcom: sm6115: declare VLS CLAMP register for USB3 + PHY (bsc#1012628). +- arm64: dts: qcom: sm8650: Fix UFS PHY clocks (bsc#1012628). +- wifi: ath12k: fix incorrect logic of calculating vdev_stats_id + (bsc#1012628). +- printk: nbcon: Relocate 32bit seq macros (bsc#1012628). +- printk: ringbuffer: Do not skip non-finalized records with + prb_next_seq() (bsc#1012628). +- printk: Wait for all reserved records with pr_flush() + (bsc#1012628). +- printk: Add this_cpu_in_panic() (bsc#1012628). +- printk: ringbuffer: Cleanup reader terminology (bsc#1012628). +- printk: ringbuffer: Skip non-finalized records in panic + (bsc#1012628). +- printk: Disable passing console lock owner completely during + panic() (bsc#1012628). +- pwm: sti: Fix capture for st,pwm-num-chan < st,capture-num-chan ++++ 971 more lines (skipped) ++++ between /work/SRC/openSUSE:Factory/kernel-source/dtb-aarch64.changes ++++ and /work/SRC/openSUSE:Factory/.kernel-source.new.1905/dtb-aarch64.changes dtb-armv6l.changes: same change dtb-armv7l.changes: same change dtb-riscv64.changes: same change kernel-64kb.changes: same change kernel-debug.changes: same change kernel-default.changes: same change kernel-docs.changes: same change kernel-kvmsmall.changes: same change kernel-lpae.changes: same change kernel-obs-build.changes: same change kernel-obs-qa.changes: same change kernel-pae.changes: same change kernel-source.changes: same change kernel-syms.changes: same change kernel-vanilla.changes: same change kernel-zfcpdump.changes: same change ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dtb-aarch64.spec ++++++ --- /var/tmp/diff_new_pack.MbhFI8/_old 2024-04-03 17:18:21.992965434 +0200 +++ /var/tmp/diff_new_pack.MbhFI8/_new 2024-04-03 17:18:21.996965581 +0200 @@ -17,7 +17,7 @@ %define srcversion 6.8 -%define patchversion 6.8.1 +%define patchversion 6.8.2 %define variant %{nil} %include %_sourcedir/kernel-spec-macros @@ -25,9 +25,9 @@ %(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,klp-symbols,splitflist,mergedep,moddep,modflist,kernel-subpackage-build}) Name: dtb-aarch64 -Version: 6.8.1 +Version: 6.8.2 %if 0%{?is_kotd} -Release: <RELEASE>.gd922afa +Release: <RELEASE>.g2eb0f0f %else Release: 0 %endif dtb-armv6l.spec: same change dtb-armv7l.spec: same change dtb-riscv64.spec: same change ++++++ kernel-64kb.spec ++++++ --- /var/tmp/diff_new_pack.MbhFI8/_old 2024-04-03 17:18:22.120970150 +0200 +++ /var/tmp/diff_new_pack.MbhFI8/_new 2024-04-03 17:18:22.124970298 +0200 @@ -18,8 +18,8 @@ %define srcversion 6.8 -%define patchversion 6.8.1 -%define git_commit d922afa2ed7e029a09447a9cdd3a52de7fa2fef8 +%define patchversion 6.8.2 +%define git_commit 2eb0f0f67053d9d94ab7bc023cc977261c47ce8a %define variant %{nil} %define compress_modules zstd %define compress_vmlinux xz @@ -36,9 +36,9 @@ %(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,klp-symbols,splitflist,mergedep,moddep,modflist,kernel-subpackage-build}) Name: kernel-64kb -Version: 6.8.1 +Version: 6.8.2 %if 0%{?is_kotd} -Release: <RELEASE>.gd922afa +Release: <RELEASE>.g2eb0f0f %else Release: 0 %endif kernel-debug.spec: same change kernel-default.spec: same change ++++++ kernel-docs.spec ++++++ --- /var/tmp/diff_new_pack.MbhFI8/_old 2024-04-03 17:18:22.216973688 +0200 +++ /var/tmp/diff_new_pack.MbhFI8/_new 2024-04-03 17:18:22.220973835 +0200 @@ -17,8 +17,8 @@ %define srcversion 6.8 -%define patchversion 6.8.1 -%define git_commit d922afa2ed7e029a09447a9cdd3a52de7fa2fef8 +%define patchversion 6.8.2 +%define git_commit 2eb0f0f67053d9d94ab7bc023cc977261c47ce8a %define variant %{nil} %define build_html 1 %define build_pdf 0 @@ -28,9 +28,9 @@ %(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,klp-symbols,splitflist,mergedep,moddep,modflist,kernel-subpackage-build}) Name: kernel-docs -Version: 6.8.1 +Version: 6.8.2 %if 0%{?is_kotd} -Release: <RELEASE>.gd922afa +Release: <RELEASE>.g2eb0f0f %else Release: 0 %endif ++++++ kernel-kvmsmall.spec ++++++ --- /var/tmp/diff_new_pack.MbhFI8/_old 2024-04-03 17:18:22.248974867 +0200 +++ /var/tmp/diff_new_pack.MbhFI8/_new 2024-04-03 17:18:22.252975014 +0200 @@ -18,8 +18,8 @@ %define srcversion 6.8 -%define patchversion 6.8.1 -%define git_commit d922afa2ed7e029a09447a9cdd3a52de7fa2fef8 +%define patchversion 6.8.2 +%define git_commit 2eb0f0f67053d9d94ab7bc023cc977261c47ce8a %define variant %{nil} %define compress_modules zstd %define compress_vmlinux xz @@ -36,9 +36,9 @@ %(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,klp-symbols,splitflist,mergedep,moddep,modflist,kernel-subpackage-build}) Name: kernel-kvmsmall -Version: 6.8.1 +Version: 6.8.2 %if 0%{?is_kotd} -Release: <RELEASE>.gd922afa +Release: <RELEASE>.g2eb0f0f %else Release: 0 %endif kernel-lpae.spec: same change ++++++ kernel-obs-build.spec ++++++ --- /var/tmp/diff_new_pack.MbhFI8/_old 2024-04-03 17:18:22.312977225 +0200 +++ /var/tmp/diff_new_pack.MbhFI8/_new 2024-04-03 17:18:22.312977225 +0200 @@ -19,7 +19,7 @@ #!BuildIgnore: post-build-checks -%define patchversion 6.8.1 +%define patchversion 6.8.2 %define variant %{nil} %include %_sourcedir/kernel-spec-macros @@ -38,16 +38,16 @@ %endif %endif %endif -%global kernel_package kernel%kernel_flavor-srchash-d922afa2ed7e029a09447a9cdd3a52de7fa2fef8 +%global kernel_package kernel%kernel_flavor-srchash-2eb0f0f67053d9d94ab7bc023cc977261c47ce8a %endif %if 0%{?rhel_version} %global kernel_package kernel %endif Name: kernel-obs-build -Version: 6.8.1 +Version: 6.8.2 %if 0%{?is_kotd} -Release: <RELEASE>.gd922afa +Release: <RELEASE>.g2eb0f0f %else Release: 0 %endif ++++++ kernel-obs-qa.spec ++++++ --- /var/tmp/diff_new_pack.MbhFI8/_old 2024-04-03 17:18:22.344978404 +0200 +++ /var/tmp/diff_new_pack.MbhFI8/_new 2024-04-03 17:18:22.344978404 +0200 @@ -17,15 +17,15 @@ # needsrootforbuild -%define patchversion 6.8.1 +%define patchversion 6.8.2 %define variant %{nil} %include %_sourcedir/kernel-spec-macros Name: kernel-obs-qa -Version: 6.8.1 +Version: 6.8.2 %if 0%{?is_kotd} -Release: <RELEASE>.gd922afa +Release: <RELEASE>.g2eb0f0f %else Release: 0 %endif ++++++ kernel-pae.spec ++++++ --- /var/tmp/diff_new_pack.MbhFI8/_old 2024-04-03 17:18:22.372979436 +0200 +++ /var/tmp/diff_new_pack.MbhFI8/_new 2024-04-03 17:18:22.376979583 +0200 @@ -18,8 +18,8 @@ %define srcversion 6.8 -%define patchversion 6.8.1 -%define git_commit d922afa2ed7e029a09447a9cdd3a52de7fa2fef8 +%define patchversion 6.8.2 +%define git_commit 2eb0f0f67053d9d94ab7bc023cc977261c47ce8a %define variant %{nil} %define compress_modules zstd %define compress_vmlinux xz @@ -36,9 +36,9 @@ %(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,klp-symbols,splitflist,mergedep,moddep,modflist,kernel-subpackage-build}) Name: kernel-pae -Version: 6.8.1 +Version: 6.8.2 %if 0%{?is_kotd} -Release: <RELEASE>.gd922afa +Release: <RELEASE>.g2eb0f0f %else Release: 0 %endif ++++++ kernel-source.spec ++++++ --- /var/tmp/diff_new_pack.MbhFI8/_old 2024-04-03 17:18:22.404980615 +0200 +++ /var/tmp/diff_new_pack.MbhFI8/_new 2024-04-03 17:18:22.408980762 +0200 @@ -17,8 +17,8 @@ %define srcversion 6.8 -%define patchversion 6.8.1 -%define git_commit d922afa2ed7e029a09447a9cdd3a52de7fa2fef8 +%define patchversion 6.8.2 +%define git_commit 2eb0f0f67053d9d94ab7bc023cc977261c47ce8a %define variant %{nil} %include %_sourcedir/kernel-spec-macros @@ -26,9 +26,9 @@ %(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,klp-symbols,splitflist,mergedep,moddep,modflist,kernel-subpackage-build}) Name: kernel-source -Version: 6.8.1 +Version: 6.8.2 %if 0%{?is_kotd} -Release: <RELEASE>.gd922afa +Release: <RELEASE>.g2eb0f0f %else Release: 0 %endif ++++++ kernel-syms.spec ++++++ --- /var/tmp/diff_new_pack.MbhFI8/_old 2024-04-03 17:18:22.436981794 +0200 +++ /var/tmp/diff_new_pack.MbhFI8/_new 2024-04-03 17:18:22.440981942 +0200 @@ -16,16 +16,16 @@ # -%define git_commit d922afa2ed7e029a09447a9cdd3a52de7fa2fef8 +%define git_commit 2eb0f0f67053d9d94ab7bc023cc977261c47ce8a %define variant %{nil} %include %_sourcedir/kernel-spec-macros Name: kernel-syms -Version: 6.8.1 +Version: 6.8.2 %if %using_buildservice %if 0%{?is_kotd} -Release: <RELEASE>.gd922afa +Release: <RELEASE>.g2eb0f0f %else Release: 0 %endif ++++++ kernel-vanilla.spec ++++++ --- /var/tmp/diff_new_pack.MbhFI8/_old 2024-04-03 17:18:22.468982974 +0200 +++ /var/tmp/diff_new_pack.MbhFI8/_new 2024-04-03 17:18:22.468982974 +0200 @@ -18,8 +18,8 @@ %define srcversion 6.8 -%define patchversion 6.8.1 -%define git_commit d922afa2ed7e029a09447a9cdd3a52de7fa2fef8 +%define patchversion 6.8.2 +%define git_commit 2eb0f0f67053d9d94ab7bc023cc977261c47ce8a %define variant %{nil} %define compress_modules zstd %define compress_vmlinux xz @@ -36,9 +36,9 @@ %(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,klp-symbols,splitflist,mergedep,moddep,modflist,kernel-subpackage-build}) Name: kernel-vanilla -Version: 6.8.1 +Version: 6.8.2 %if 0%{?is_kotd} -Release: <RELEASE>.gd922afa +Release: <RELEASE>.g2eb0f0f %else Release: 0 %endif kernel-zfcpdump.spec: same change ++++++ config.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/arm64/default new/config/arm64/default --- old/config/arm64/default 2024-03-13 10:01:35.000000000 +0100 +++ new/config/arm64/default 2024-03-28 06:45:11.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 6.8.0 Kernel Configuration +# Linux/arm64 6.8.2 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)" CONFIG_CC_IS_GCC=y @@ -1961,7 +1961,6 @@ CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HIDP=m -CONFIG_BT_HS=y CONFIG_BT_LE=y CONFIG_BT_LE_L2CAP_ECRED=y CONFIG_BT_6LOWPAN=m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/armv6hl/default new/config/armv6hl/default --- old/config/armv6hl/default 2024-03-13 10:01:35.000000000 +0100 +++ new/config/armv6hl/default 2024-03-28 06:45:11.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 6.8.0 Kernel Configuration +# Linux/arm 6.8.2 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)" CONFIG_CC_IS_GCC=y @@ -1633,7 +1633,6 @@ CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HIDP=m -CONFIG_BT_HS=y CONFIG_BT_LE=y CONFIG_BT_LE_L2CAP_ECRED=y CONFIG_BT_6LOWPAN=m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/armv7hl/default new/config/armv7hl/default --- old/config/armv7hl/default 2024-03-13 10:01:35.000000000 +0100 +++ new/config/armv7hl/default 2024-03-28 06:45:11.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 6.8.0 Kernel Configuration +# Linux/arm 6.8.2 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)" CONFIG_CC_IS_GCC=y @@ -1969,7 +1969,6 @@ CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HIDP=m -CONFIG_BT_HS=y CONFIG_BT_LE=y CONFIG_BT_LE_L2CAP_ECRED=y CONFIG_BT_6LOWPAN=m @@ -2334,6 +2333,7 @@ CONFIG_QCOM_SSC_BLOCK_BUS=y # CONFIG_SUN50I_DE2_BUS is not set CONFIG_SUNXI_RSB=y +CONFIG_TEGRA_ACONNECT=y CONFIG_TEGRA_GMI=m CONFIG_TI_PWMSS=y CONFIG_TI_SYSC=y @@ -9588,6 +9588,7 @@ CONFIG_STE_DMA40=y CONFIG_ST_FDMA=m CONFIG_TEGRA20_APB_DMA=y +CONFIG_TEGRA210_ADMA=m CONFIG_XILINX_DMA=m CONFIG_XILINX_XDMA=m # CONFIG_XILINX_ZYNQMP_DMA is not set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/i386/pae new/config/i386/pae --- old/config/i386/pae 2024-03-13 10:01:35.000000000 +0100 +++ new/config/i386/pae 2024-03-28 06:45:11.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/i386 6.8.0 Kernel Configuration +# Linux/i386 6.8.2 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)" CONFIG_CC_IS_GCC=y @@ -1923,7 +1923,6 @@ CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HIDP=m -CONFIG_BT_HS=y CONFIG_BT_LE=y CONFIG_BT_LE_L2CAP_ECRED=y CONFIG_BT_6LOWPAN=m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64le/default new/config/ppc64le/default --- old/config/ppc64le/default 2024-03-13 10:01:35.000000000 +0100 +++ new/config/ppc64le/default 2024-03-28 06:45:11.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/powerpc 6.8.0 Kernel Configuration +# Linux/powerpc 6.8.2 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)" CONFIG_CC_IS_GCC=y @@ -1718,7 +1718,6 @@ CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HIDP=m -CONFIG_BT_HS=y CONFIG_BT_LE=y CONFIG_BT_LE_L2CAP_ECRED=y CONFIG_BT_6LOWPAN=m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/riscv64/default new/config/riscv64/default --- old/config/riscv64/default 2024-03-13 10:01:35.000000000 +0100 +++ new/config/riscv64/default 2024-03-28 06:45:11.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/riscv 6.8.0 Kernel Configuration +# Linux/riscv 6.8.2 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)" CONFIG_CC_IS_GCC=y @@ -1699,7 +1699,6 @@ CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HIDP=m -CONFIG_BT_HS=y CONFIG_BT_LE=y CONFIG_BT_LE_L2CAP_ECRED=y CONFIG_BT_6LOWPAN=m diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/s390x/default new/config/s390x/default --- old/config/s390x/default 2024-03-13 10:01:35.000000000 +0100 +++ new/config/s390x/default 2024-03-28 06:45:11.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/s390 6.8.0 Kernel Configuration +# Linux/s390 6.8.2 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)" CONFIG_CC_IS_GCC=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/s390x/zfcpdump new/config/s390x/zfcpdump --- old/config/s390x/zfcpdump 2024-03-13 10:01:35.000000000 +0100 +++ new/config/s390x/zfcpdump 2024-03-28 06:45:11.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/s390 6.8.0 Kernel Configuration +# Linux/s390 6.8.2 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)" CONFIG_CC_IS_GCC=y diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/default new/config/x86_64/default --- old/config/x86_64/default 2024-03-13 10:01:35.000000000 +0100 +++ new/config/x86_64/default 2024-03-28 06:45:11.000000000 +0100 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 6.8.0 Kernel Configuration +# Linux/x86_64 6.8.2 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (scripts/dummy-tools/gcc)" CONFIG_CC_IS_GCC=y @@ -2029,7 +2029,6 @@ CONFIG_BT_BNEP_MC_FILTER=y CONFIG_BT_BNEP_PROTO_FILTER=y CONFIG_BT_HIDP=m -CONFIG_BT_HS=y CONFIG_BT_LE=y CONFIG_BT_LE_L2CAP_ECRED=y CONFIG_BT_6LOWPAN=m ++++++ patches.kernel.org.tar.bz2 ++++++ ++++ 65004 lines of diff (skipped) ++++++ patches.suse.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/Bluetooth-hci_sync-Fix-not-checking-error-on-hci_cmd.patch new/patches.suse/Bluetooth-hci_sync-Fix-not-checking-error-on-hci_cmd.patch --- old/patches.suse/Bluetooth-hci_sync-Fix-not-checking-error-on-hci_cmd.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.suse/Bluetooth-hci_sync-Fix-not-checking-error-on-hci_cmd.patch 2024-04-02 11:38:08.000000000 +0200 @@ -0,0 +1,68 @@ +From: Luiz Augusto von Dentz <luiz.von.de...@intel.com> +Date: Tue, 26 Mar 2024 12:43:17 -0400 +Subject: Bluetooth: hci_sync: Fix not checking error on + hci_cmd_sync_cancel_sync +Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git#master +Git-commit: 1c3366abdbe884be62e5a7502b4db758aa3974c6 +Patch-mainline: Queued in subsystem maintainer repository +References: bluetooth-fix + +hci_cmd_sync_cancel_sync shall check the error passed to it since it +will be propagated using req_result which is __u32 it needs to be +properly set to a positive value if it was passed as negative othertise +IS_ERR will not trigger as -(errno) would be converted to a positive +value. + +Fixes: 63298d6e752f ("Bluetooth: hci_core: Cancel request on command timeout") +Signed-off-by: Luiz Augusto von Dentz <luiz.von.de...@intel.com> +Reported-and-tested-by: Thorsten Leemhuis <li...@leemhuis.info> +Closes: https://lore.kernel.org/all/08275279-7462-4f4a-a0ee-8aa015f82...@leemhuis.info/ +Signed-off-by: Jiri Slaby <jsl...@suse.cz> +--- + net/bluetooth/hci_core.c | 6 +++--- + net/bluetooth/hci_sync.c | 5 ++++- + 2 files changed, 7 insertions(+), 4 deletions(-) + +--- a/net/bluetooth/hci_core.c ++++ b/net/bluetooth/hci_core.c +@@ -2842,7 +2842,7 @@ static void hci_cancel_cmd_sync(struct h + cancel_delayed_work_sync(&hdev->ncmd_timer); + atomic_set(&hdev->cmd_cnt, 1); + +- hci_cmd_sync_cancel_sync(hdev, -err); ++ hci_cmd_sync_cancel_sync(hdev, err); + } + + /* Suspend HCI device */ +@@ -2862,7 +2862,7 @@ int hci_suspend_dev(struct hci_dev *hdev + return 0; + + /* Cancel potentially blocking sync operation before suspend */ +- hci_cancel_cmd_sync(hdev, -EHOSTDOWN); ++ hci_cancel_cmd_sync(hdev, EHOSTDOWN); + + hci_req_sync_lock(hdev); + ret = hci_suspend_sync(hdev); +@@ -4178,7 +4178,7 @@ static void hci_send_cmd_sync(struct hci + + err = hci_send_frame(hdev, skb); + if (err < 0) { +- hci_cmd_sync_cancel_sync(hdev, err); ++ hci_cmd_sync_cancel_sync(hdev, -err); + return; + } + +--- a/net/bluetooth/hci_sync.c ++++ b/net/bluetooth/hci_sync.c +@@ -611,7 +611,10 @@ void hci_cmd_sync_cancel_sync(struct hci + bt_dev_dbg(hdev, "err 0x%2.2x", err); + + if (hdev->req_status == HCI_REQ_PEND) { +- hdev->req_result = err; ++ /* req_result is __u32 so error must be positive to be properly ++ * propagated. ++ */ ++ hdev->req_result = err < 0 ? -err : err; + hdev->req_status = HCI_REQ_CANCELED; + + wake_up_interruptible(&hdev->req_wait_q); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/Revert-io_uring-remove-unconditional-looping-in-loca.patch new/patches.suse/Revert-io_uring-remove-unconditional-looping-in-loca.patch --- old/patches.suse/Revert-io_uring-remove-unconditional-looping-in-loca.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.suse/Revert-io_uring-remove-unconditional-looping-in-loca.patch 2024-04-02 11:38:08.000000000 +0200 @@ -0,0 +1,157 @@ +From: Jiri Slaby <jsl...@suse.cz> +Date: Tue, 2 Apr 2024 10:01:47 +0200 +Subject: Revert "io_uring: remove unconditional looping in local task_work + handling" +Patch-mainline: never, only a workaround +References: liburing_failure + +This reverts commit a352d5a59f4f8812d83bfc50d48bd3a517be1791, it breaks +liburing's recv-multishot test. + +See: +https://lore.kernel.org/all/bcf80774-98c2-4c14-a1e7-6efcb79a7...@kernel.org/ + +Signed-off-by: Jiri Slaby <jsl...@suse.cz> +--- + io_uring/io_uring.c | 44 +++++++++++++++----------------------------- + 1 file changed, 15 insertions(+), 29 deletions(-) + +--- a/io_uring/io_uring.c ++++ b/io_uring/io_uring.c +@@ -1389,20 +1389,7 @@ static void __cold io_move_task_work_fro + } + } + +-static bool io_run_local_work_continue(struct io_ring_ctx *ctx, int events, +- int min_events) +-{ +- if (llist_empty(&ctx->work_llist)) +- return false; +- if (events < min_events) +- return true; +- if (ctx->flags & IORING_SETUP_TASKRUN_FLAG) +- atomic_or(IORING_SQ_TASKRUN, &ctx->rings->sq_flags); +- return false; +-} +- +-static int __io_run_local_work(struct io_ring_ctx *ctx, struct io_tw_state *ts, +- int min_events) ++static int __io_run_local_work(struct io_ring_ctx *ctx, struct io_tw_state *ts) + { + struct llist_node *node; + unsigned int loops = 0; +@@ -1431,20 +1418,18 @@ again: + } + loops++; + +- if (io_run_local_work_continue(ctx, ret, min_events)) ++ if (!llist_empty(&ctx->work_llist)) + goto again; + if (ts->locked) { + io_submit_flush_completions(ctx); +- if (io_run_local_work_continue(ctx, ret, min_events)) ++ if (!llist_empty(&ctx->work_llist)) + goto again; + } +- + trace_io_uring_local_work_run(ctx, ret, loops); + return ret; + } + +-static inline int io_run_local_work_locked(struct io_ring_ctx *ctx, +- int min_events) ++static inline int io_run_local_work_locked(struct io_ring_ctx *ctx) + { + struct io_tw_state ts = { .locked = true, }; + int ret; +@@ -1452,20 +1437,20 @@ static inline int io_run_local_work_lock + if (llist_empty(&ctx->work_llist)) + return 0; + +- ret = __io_run_local_work(ctx, &ts, min_events); ++ ret = __io_run_local_work(ctx, &ts); + /* shouldn't happen! */ + if (WARN_ON_ONCE(!ts.locked)) + mutex_lock(&ctx->uring_lock); + return ret; + } + +-static int io_run_local_work(struct io_ring_ctx *ctx, int min_events) ++static int io_run_local_work(struct io_ring_ctx *ctx) + { + struct io_tw_state ts = {}; + int ret; + + ts.locked = mutex_trylock(&ctx->uring_lock); +- ret = __io_run_local_work(ctx, &ts, min_events); ++ ret = __io_run_local_work(ctx, &ts); + if (ts.locked) + mutex_unlock(&ctx->uring_lock); + +@@ -1661,7 +1646,7 @@ static int io_iopoll_check(struct io_rin + io_task_work_pending(ctx)) { + u32 tail = ctx->cached_cq_tail; + +- (void) io_run_local_work_locked(ctx, min); ++ (void) io_run_local_work_locked(ctx); + + if (task_work_pending(current) || + wq_list_empty(&ctx->iopoll_list)) { +@@ -2504,7 +2489,7 @@ int io_run_task_work_sig(struct io_ring_ + { + if (!llist_empty(&ctx->work_llist)) { + __set_current_state(TASK_RUNNING); +- if (io_run_local_work(ctx, INT_MAX) > 0) ++ if (io_run_local_work(ctx) > 0) + return 0; + } + if (io_run_task_work() > 0) +@@ -2571,7 +2556,7 @@ static int io_cqring_wait(struct io_ring + if (!io_allowed_run_tw(ctx)) + return -EEXIST; + if (!llist_empty(&ctx->work_llist)) +- io_run_local_work(ctx, min_events); ++ io_run_local_work(ctx); + io_run_task_work(); + io_cqring_overflow_flush(ctx); + /* if user messes with these they will just get an early return */ +@@ -2609,10 +2594,11 @@ static int io_cqring_wait(struct io_ring + + trace_io_uring_cqring_wait(ctx, min_events); + do { +- int nr_wait = (int) iowq.cq_tail - READ_ONCE(ctx->rings->cq.tail); + unsigned long check_cq; + + if (ctx->flags & IORING_SETUP_DEFER_TASKRUN) { ++ int nr_wait = (int) iowq.cq_tail - READ_ONCE(ctx->rings->cq.tail); ++ + atomic_set(&ctx->cq_wait_nr, nr_wait); + set_current_state(TASK_INTERRUPTIBLE); + } else { +@@ -2631,7 +2617,7 @@ static int io_cqring_wait(struct io_ring + */ + io_run_task_work(); + if (!llist_empty(&ctx->work_llist)) +- io_run_local_work(ctx, nr_wait); ++ io_run_local_work(ctx); + + /* + * Non-local task_work will be run on exit to userspace, but +@@ -3290,7 +3276,7 @@ static __cold bool io_uring_try_cancel_r + + if ((ctx->flags & IORING_SETUP_DEFER_TASKRUN) && + io_allowed_defer_tw_run(ctx)) +- ret |= io_run_local_work(ctx, INT_MAX) > 0; ++ ret |= io_run_local_work(ctx) > 0; + ret |= io_cancel_defer_files(ctx, task, cancel_all); + mutex_lock(&ctx->uring_lock); + ret |= io_poll_remove_all(ctx, task, cancel_all); +@@ -3652,7 +3638,7 @@ SYSCALL_DEFINE6(io_uring_enter, unsigned + * it should handle ownership problems if any. + */ + if (ctx->flags & IORING_SETUP_DEFER_TASKRUN) +- (void)io_run_local_work_locked(ctx, min_complete); ++ (void)io_run_local_work_locked(ctx); + } + mutex_unlock(&ctx->uring_lock); + } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/Workaround-broken-chacha-crypto-fallback.patch new/patches.suse/Workaround-broken-chacha-crypto-fallback.patch --- old/patches.suse/Workaround-broken-chacha-crypto-fallback.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.suse/Workaround-broken-chacha-crypto-fallback.patch 2024-04-02 11:38:08.000000000 +0200 @@ -0,0 +1,87 @@ +From mboxrd@z Thu Jan 1 00:00:00 1970 +From: Michael Ellerman <m...@ellerman.id.au> +To: <linuxppc-...@lists.ozlabs.org> +Subject: [PATCH] powerpc/crypto/chacha-p10: Fix failure on non Power10 +Date: Fri, 29 Mar 2024 00:02:00 +1100 +Message-ID: <20240328130200.3041687-1-...@ellerman.id.au> + +References: boo#1218114 +Patch-mainline: Submitted https://lore.kernel.org/linuxppc-dev/20240328130200.3041687-1-...@ellerman.id.au/T/#u + +The chacha-p10-crypto module provides optimised chacha routines for +Power10. It also selects CRYPTO_ARCH_HAVE_LIB_CHACHA which says it +provides chacha_crypt_arch() to generic code. + +Notably the module needs to provide chacha_crypt_arch() regardless of +whether it is loaded on Power10 or an older CPU. + +The implementation of chacha_crypt_arch() already has a fallback to +chacha_crypt_generic(), however the module as a whole fails to load on +pre-Power10, because of the use of module_cpu_feature_match(). + +This breaks for example loading wireguard: + + jostaberry-1:~ # modprobe -v wireguard + insmod /lib/modules/6.8.0-lp155.8.g7e0e887-default/kernel/arch/powerpc/crypto/chacha-p10-crypto.ko.zst + modprobe: ERROR: could not insert 'wireguard': No such device + +Fix it by removing module_cpu_feature_match(), and instead check the +CPU feature manually. If the CPU feature is not found, the module +still loads successfully, but doesn't register the Power10 specific +algorithms. That allows chacha_crypt_generic() to remain available for +use, fixing the problem. + + [root@fedora ~]# modprobe -v wireguard + insmod /lib/modules/6.8.0-00001-g786a790c4d79/kernel/net/ipv4/udp_tunnel.ko + insmod /lib/modules/6.8.0-00001-g786a790c4d79/kernel/net/ipv6/ip6_udp_tunnel.ko + insmod /lib/modules/6.8.0-00001-g786a790c4d79/kernel/lib/crypto/libchacha.ko + insmod /lib/modules/6.8.0-00001-g786a790c4d79/kernel/arch/powerpc/crypto/chacha-p10-crypto.ko + insmod /lib/modules/6.8.0-00001-g786a790c4d79/kernel/lib/crypto/libchacha20poly1305.ko + insmod /lib/modules/6.8.0-00001-g786a790c4d79/kernel/drivers/net/wireguard/wireguard.ko + [ 18.910452][ T721] wireguard: allowedips self-tests: pass + [ 18.914999][ T721] wireguard: nonce counter self-tests: pass + [ 19.029066][ T721] wireguard: ratelimiter self-tests: pass + [ 19.029257][ T721] wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information. + [ 19.029361][ T721] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld <ja...@zx2c4.com>. All Rights Reserved. + +Reported-by: Michal Suchánek <msucha...@suse.de> +Closes: https://lore.kernel.org/all/20240315122005.gg20...@kitsune.suse.cz/ +Signed-off-by: Michael Ellerman <m...@ellerman.id.au> +Acked-by: Michal Suchanek <msucha...@suse.de> +--- + arch/powerpc/crypto/chacha-p10-glue.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/arch/powerpc/crypto/chacha-p10-glue.c b/arch/powerpc/crypto/chacha-p10-glue.c +index 74fb86b0d209..7c728755852e 100644 +--- a/arch/powerpc/crypto/chacha-p10-glue.c ++++ b/arch/powerpc/crypto/chacha-p10-glue.c +@@ -197,6 +197,9 @@ static struct skcipher_alg algs[] = { + + static int __init chacha_p10_init(void) + { ++ if (!cpu_has_feature(CPU_FTR_ARCH_31)) ++ return 0; ++ + static_branch_enable(&have_p10); + + return crypto_register_skciphers(algs, ARRAY_SIZE(algs)); +@@ -204,10 +207,13 @@ static int __init chacha_p10_init(void) + + static void __exit chacha_p10_exit(void) + { ++ if (!static_branch_likely(&have_p10)) ++ return; ++ + crypto_unregister_skciphers(algs, ARRAY_SIZE(algs)); + } + +-module_cpu_feature_match(PPC_MODULE_FEATURE_P10, chacha_p10_init); ++module_init(chacha_p10_init); + module_exit(chacha_p10_exit); + + MODULE_DESCRIPTION("ChaCha and XChaCha stream ciphers (P10 accelerated)"); +-- +2.44.0 + + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/btrfs-fix-race-when-detecting-delalloc-ranges-during.patch new/patches.suse/btrfs-fix-race-when-detecting-delalloc-ranges-during.patch --- old/patches.suse/btrfs-fix-race-when-detecting-delalloc-ranges-during.patch 2024-03-19 08:32:20.000000000 +0100 +++ new/patches.suse/btrfs-fix-race-when-detecting-delalloc-ranges-during.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,504 +0,0 @@ -From: Filipe Manana <fdman...@suse.com> -Date: Wed, 28 Feb 2024 11:37:56 +0000 -Subject: btrfs: fix race when detecting delalloc ranges during fiemap -Git-commit: 978b63f7464abcfd364a6c95f734282c50f3decf -Patch-mainline: v6.9-rc1 -References: btrfs-fix - -For fiemap we recently stopped locking the target extent range for the -whole duration of the fiemap call, in order to avoid a deadlock in a -scenario where the fiemap buffer happens to be a memory mapped range of -the same file. This use case is very unlikely to be useful in practice but -it may be triggered by fuzz testing (syzbot, etc). - -This however introduced a race that makes us miss delalloc ranges for -file regions that are currently holes, so the caller of fiemap will not -be aware that there's data for some file regions. This can be quite -serious for some use cases - for example in coreutils versions before 9.0, -the cp program used fiemap to detect holes and data in the source file, -copying only regions with data (extents or delalloc) from the source file -to the destination file in order to preserve holes (see the documentation -for its --sparse command line option). This means that if cp was used -with a source file that had delalloc in a hole, the destination file could -end up without that data, which is effectively a data loss issue, if it -happened to hit the race described below. - -The race happens like this: - -1) Fiemap is called, without the FIEMAP_FLAG_SYNC flag, for a file that - has delalloc in the file range [64M, 65M[, which is currently a hole; - -2) Fiemap locks the inode in shared mode, then starts iterating the - inode's subvolume tree searching for file extent items, without having - the whole fiemap target range locked in the inode's io tree - the - change introduced recently by commit b0ad381fa769 ("btrfs: fix - deadlock with fiemap and extent locking"). It only locks ranges in - the io tree when it finds a hole or prealloc extent since that - commit; - -3) Note that fiemap clones each leaf before using it, and this is to - avoid deadlocks when locking a file range in the inode's io tree and - the fiemap buffer is memory mapped to some file, because writing - to the page with btrfs_page_mkwrite() will wait on any ordered extent - for the page's range and the ordered extent needs to lock the range - and may need to modify the same leaf, therefore leading to a deadlock - on the leaf; - -4) While iterating the file extent items in the cloned leaf before - finding the hole in the range [64M, 65M[, the delalloc in that range - is flushed and its ordered extent completes - meaning the corresponding - file extent item is in the inode's subvolume tree, but not present in - the cloned leaf that fiemap is iterating over; - -5) When fiemap finds the hole in the [64M, 65M[ range by seeing the gap in - the cloned leaf (or a file extent item with disk_bytenr == 0 in case - the NO_HOLES feature is not enabled), it will lock that file range in - the inode's io tree and then search for delalloc by checking for the - EXTENT_DELALLOC bit in the io tree for that range and ordered extents - (with btrfs_find_delalloc_in_range()). But it finds nothing since the - delalloc in that range was already flushed and the ordered extent - completed and is gone - as a result fiemap will not report that there's - delalloc or an extent for the range [64M, 65M[, so user space will be - mislead into thinking that there's a hole in that range. - -This could actually be sporadically triggered with test case generic/094 -from fstests, which reports a missing extent/delalloc range like this: - - generic/094 2s ... - output mismatch (see /home/fdmanana/git/hub/xfstests/results//generic/094.out.bad) - X-- tests/generic/094.out 2020-06-10 19:29:03.830519425 +0100 - X++ /home/fdmanana/git/hub/xfstests/results//generic/094.out.bad 2024-02-28 11:00:00.381071525 +0000 - @@ -1,3 +1,9 @@ - QA output created by 094 - fiemap run with sync - fiemap run without sync - +ERROR: couldn't find extent at 7 - +map is 'HHDDHPPDPHPH' - +logical: [ 5.. 6] phys: 301517.. 301518 flags: 0x800 tot: 2 - +logical: [ 8.. 8] phys: 301520.. 301520 flags: 0x800 tot: 1 - ... - (Run 'diff -u /home/fdmanana/git/hub/xfstests/tests/generic/094.out /home/fdmanana/git/hub/xfstests/results//generic/094.out.bad' to see the entire diff) - -So in order to fix this, while still avoiding deadlocks in the case where -the fiemap buffer is memory mapped to the same file, change fiemap to work -like the following: - -1) Always lock the whole range in the inode's io tree before starting to - iterate the inode's subvolume tree searching for file extent items, - just like we did before commit b0ad381fa769 ("btrfs: fix deadlock with - fiemap and extent locking"); - -2) Now instead of writing to the fiemap buffer every time we have an extent - to report, write instead to a temporary buffer (1 page), and when that - buffer becomes full, stop iterating the file extent items, unlock the - range in the io tree, release the search path, submit all the entries - kept in that buffer to the fiemap buffer, and then resume the search - for file extent items after locking again the remainder of the range in - the io tree. - - The buffer having a size of a page, allows for 146 entries in a system - with 4K pages. This is a large enough value to have a good performance - by avoiding too many restarts of the search for file extent items. - In other words this preserves the huge performance gains made in the - last two years to fiemap, while avoiding the deadlocks in case the - fiemap buffer is memory mapped to the same file (useless in practice, - but possible and exercised by fuzz testing and syzbot). - -Fixes: b0ad381fa769 ("btrfs: fix deadlock with fiemap and extent locking") -Reviewed-by: Josef Bacik <jo...@toxicpanda.com> -Signed-off-by: Filipe Manana <fdman...@suse.com> -Signed-off-by: David Sterba <dste...@suse.com> -Signed-off-by: Jiri Slaby <jsl...@suse.cz> ---- - fs/btrfs/extent_io.c | 221 ++++++++++++++++++++++++++++++++++++--------------- - 1 file changed, 160 insertions(+), 61 deletions(-) - ---- a/fs/btrfs/extent_io.c -+++ b/fs/btrfs/extent_io.c -@@ -2453,12 +2453,65 @@ next: - return try_release_extent_state(tree, page, mask); - } - -+struct btrfs_fiemap_entry { -+ u64 offset; -+ u64 phys; -+ u64 len; -+ u32 flags; -+}; -+ -+/* -+ * Indicate the caller of emit_fiemap_extent() that it needs to unlock the file -+ * range from the inode's io tree, unlock the subvolume tree search path, flush -+ * the fiemap cache and relock the file range and research the subvolume tree. -+ * The value here is something negative that can't be confused with a valid -+ * errno value and different from 1 because that's also a return value from -+ * fiemap_fill_next_extent() and also it's often used to mean some btree search -+ * did not find a key, so make it some distinct negative value. -+ */ -+#define BTRFS_FIEMAP_FLUSH_CACHE (-(MAX_ERRNO + 1)) -+ - /* -- * To cache previous fiemap extent -+ * Used to: -+ * -+ * - Cache the next entry to be emitted to the fiemap buffer, so that we can -+ * merge extents that are contiguous and can be grouped as a single one; - * -- * Will be used for merging fiemap extent -+ * - Store extents ready to be written to the fiemap buffer in an intermediary -+ * buffer. This intermediary buffer is to ensure that in case the fiemap -+ * buffer is memory mapped to the fiemap target file, we don't deadlock -+ * during btrfs_page_mkwrite(). This is because during fiemap we are locking -+ * an extent range in order to prevent races with delalloc flushing and -+ * ordered extent completion, which is needed in order to reliably detect -+ * delalloc in holes and prealloc extents. And this can lead to a deadlock -+ * if the fiemap buffer is memory mapped to the file we are running fiemap -+ * against (a silly, useless in practice scenario, but possible) because -+ * btrfs_page_mkwrite() will try to lock the same extent range. - */ - struct fiemap_cache { -+ /* An array of ready fiemap entries. */ -+ struct btrfs_fiemap_entry *entries; -+ /* Number of entries in the entries array. */ -+ int entries_size; -+ /* Index of the next entry in the entries array to write to. */ -+ int entries_pos; -+ /* -+ * Once the entries array is full, this indicates what's the offset for -+ * the next file extent item we must search for in the inode's subvolume -+ * tree after unlocking the extent range in the inode's io tree and -+ * releasing the search path. -+ */ -+ u64 next_search_offset; -+ /* -+ * This matches struct fiemap_extent_info::fi_mapped_extents, we use it -+ * to count ourselves emitted extents and stop instead of relying on -+ * fiemap_fill_next_extent() because we buffer ready fiemap entries at -+ * the @entries array, and we want to stop as soon as we hit the max -+ * amount of extents to map, not just to save time but also to make the -+ * logic at extent_fiemap() simpler. -+ */ -+ unsigned int extents_mapped; -+ /* Fields for the cached extent (unsubmitted, not ready, extent). */ - u64 offset; - u64 phys; - u64 len; -@@ -2466,6 +2519,28 @@ struct fiemap_cache { - bool cached; - }; - -+static int flush_fiemap_cache(struct fiemap_extent_info *fieinfo, -+ struct fiemap_cache *cache) -+{ -+ for (int i = 0; i < cache->entries_pos; i++) { -+ struct btrfs_fiemap_entry *entry = &cache->entries[i]; -+ int ret; -+ -+ ret = fiemap_fill_next_extent(fieinfo, entry->offset, -+ entry->phys, entry->len, -+ entry->flags); -+ /* -+ * Ignore 1 (reached max entries) because we keep track of that -+ * ourselves in emit_fiemap_extent(). -+ */ -+ if (ret < 0) -+ return ret; -+ } -+ cache->entries_pos = 0; -+ -+ return 0; -+} -+ - /* - * Helper to submit fiemap extent. - * -@@ -2480,8 +2555,8 @@ static int emit_fiemap_extent(struct fie - struct fiemap_cache *cache, - u64 offset, u64 phys, u64 len, u32 flags) - { -+ struct btrfs_fiemap_entry *entry; - u64 cache_end; -- int ret = 0; - - /* Set at the end of extent_fiemap(). */ - ASSERT((flags & FIEMAP_EXTENT_LAST) == 0); -@@ -2494,7 +2569,9 @@ static int emit_fiemap_extent(struct fie - * find an extent that starts at an offset behind the end offset of the - * previous extent we processed. This happens if fiemap is called - * without FIEMAP_FLAG_SYNC and there are ordered extents completing -- * while we call btrfs_next_leaf() (through fiemap_next_leaf_item()). -+ * after we had to unlock the file range, release the search path, emit -+ * the fiemap extents stored in the buffer (cache->entries array) and -+ * the lock the remainder of the range and re-search the btree. - * - * For example we are in leaf X processing its last item, which is the - * file extent item for file range [512K, 1M[, and after -@@ -2607,11 +2684,35 @@ static int emit_fiemap_extent(struct fie - - emit: - /* Not mergeable, need to submit cached one */ -- ret = fiemap_fill_next_extent(fieinfo, cache->offset, cache->phys, -- cache->len, cache->flags); -- cache->cached = false; -- if (ret) -- return ret; -+ -+ if (cache->entries_pos == cache->entries_size) { -+ /* -+ * We will need to research for the end offset of the last -+ * stored extent and not from the current offset, because after -+ * unlocking the range and releasing the path, if there's a hole -+ * between that end offset and this current offset, a new extent -+ * may have been inserted due to a new write, so we don't want -+ * to miss it. -+ */ -+ entry = &cache->entries[cache->entries_size - 1]; -+ cache->next_search_offset = entry->offset + entry->len; -+ cache->cached = false; -+ -+ return BTRFS_FIEMAP_FLUSH_CACHE; -+ } -+ -+ entry = &cache->entries[cache->entries_pos]; -+ entry->offset = cache->offset; -+ entry->phys = cache->phys; -+ entry->len = cache->len; -+ entry->flags = cache->flags; -+ cache->entries_pos++; -+ cache->extents_mapped++; -+ -+ if (cache->extents_mapped == fieinfo->fi_extents_max) { -+ cache->cached = false; -+ return 1; -+ } - assign: - cache->cached = true; - cache->offset = offset; -@@ -2737,8 +2838,8 @@ static int fiemap_search_slot(struct btr - * neighbour leaf). - * We also need the private clone because holding a read lock on an - * extent buffer of the subvolume's b+tree will make lockdep unhappy -- * when we call fiemap_fill_next_extent(), because that may cause a page -- * fault when filling the user space buffer with fiemap data. -+ * when we check if extents are shared, as backref walking may need to -+ * lock the same leaf we are processing. - */ - clone = btrfs_clone_extent_buffer(path->nodes[0]); - if (!clone) -@@ -2778,34 +2879,16 @@ static int fiemap_process_hole(struct bt - * it beyond i_size. - */ - while (cur_offset < end && cur_offset < i_size) { -- struct extent_state *cached_state = NULL; - u64 delalloc_start; - u64 delalloc_end; - u64 prealloc_start; -- u64 lockstart; -- u64 lockend; - u64 prealloc_len = 0; - bool delalloc; - -- lockstart = round_down(cur_offset, inode->root->fs_info->sectorsize); -- lockend = round_up(end, inode->root->fs_info->sectorsize); -- -- /* -- * We are only locking for the delalloc range because that's the -- * only thing that can change here. With fiemap we have a lock -- * on the inode, so no buffered or direct writes can happen. -- * -- * However mmaps and normal page writeback will cause this to -- * change arbitrarily. We have to lock the extent lock here to -- * make sure that nobody messes with the tree while we're doing -- * btrfs_find_delalloc_in_range. -- */ -- lock_extent(&inode->io_tree, lockstart, lockend, &cached_state); - delalloc = btrfs_find_delalloc_in_range(inode, cur_offset, end, - delalloc_cached_state, - &delalloc_start, - &delalloc_end); -- unlock_extent(&inode->io_tree, lockstart, lockend, &cached_state); - if (!delalloc) - break; - -@@ -2973,6 +3056,7 @@ int extent_fiemap(struct btrfs_inode *in - u64 start, u64 len) - { - const u64 ino = btrfs_ino(inode); -+ struct extent_state *cached_state = NULL; - struct extent_state *delalloc_cached_state = NULL; - struct btrfs_path *path; - struct fiemap_cache cache = { 0 }; -@@ -2985,26 +3069,33 @@ int extent_fiemap(struct btrfs_inode *in - bool stopped = false; - int ret; - -+ cache.entries_size = PAGE_SIZE / sizeof(struct btrfs_fiemap_entry); -+ cache.entries = kmalloc_array(cache.entries_size, -+ sizeof(struct btrfs_fiemap_entry), -+ GFP_KERNEL); - backref_ctx = btrfs_alloc_backref_share_check_ctx(); - path = btrfs_alloc_path(); -- if (!backref_ctx || !path) { -+ if (!cache.entries || !backref_ctx || !path) { - ret = -ENOMEM; - goto out; - } - -+restart: - range_start = round_down(start, sectorsize); - range_end = round_up(start + len, sectorsize); - prev_extent_end = range_start; - -+ lock_extent(&inode->io_tree, range_start, range_end, &cached_state); -+ - ret = fiemap_find_last_extent_offset(inode, path, &last_extent_end); - if (ret < 0) -- goto out; -+ goto out_unlock; - btrfs_release_path(path); - - path->reada = READA_FORWARD; - ret = fiemap_search_slot(inode, path, range_start); - if (ret < 0) { -- goto out; -+ goto out_unlock; - } else if (ret > 0) { - /* - * No file extent item found, but we may have delalloc between -@@ -3051,7 +3142,7 @@ int extent_fiemap(struct btrfs_inode *in - backref_ctx, 0, 0, 0, - prev_extent_end, hole_end); - if (ret < 0) { -- goto out; -+ goto out_unlock; - } else if (ret > 0) { - /* fiemap_fill_next_extent() told us to stop. */ - stopped = true; -@@ -3107,7 +3198,7 @@ int extent_fiemap(struct btrfs_inode *in - extent_gen, - backref_ctx); - if (ret < 0) -- goto out; -+ goto out_unlock; - else if (ret > 0) - flags |= FIEMAP_EXTENT_SHARED; - } -@@ -3118,9 +3209,9 @@ int extent_fiemap(struct btrfs_inode *in - } - - if (ret < 0) { -- goto out; -+ goto out_unlock; - } else if (ret > 0) { -- /* fiemap_fill_next_extent() told us to stop. */ -+ /* emit_fiemap_extent() told us to stop. */ - stopped = true; - break; - } -@@ -3129,12 +3220,12 @@ int extent_fiemap(struct btrfs_inode *in - next_item: - if (fatal_signal_pending(current)) { - ret = -EINTR; -- goto out; -+ goto out_unlock; - } - - ret = fiemap_next_leaf_item(inode, path); - if (ret < 0) { -- goto out; -+ goto out_unlock; - } else if (ret > 0) { - /* No more file extent items for this inode. */ - break; -@@ -3143,22 +3234,12 @@ next_item: - } - - check_eof_delalloc: -- /* -- * Release (and free) the path before emitting any final entries to -- * fiemap_fill_next_extent() to keep lockdep happy. This is because -- * once we find no more file extent items exist, we may have a -- * non-cloned leaf, and fiemap_fill_next_extent() can trigger page -- * faults when copying data to the user space buffer. -- */ -- btrfs_free_path(path); -- path = NULL; -- - if (!stopped && prev_extent_end < range_end) { - ret = fiemap_process_hole(inode, fieinfo, &cache, - &delalloc_cached_state, backref_ctx, - 0, 0, 0, prev_extent_end, range_end - 1); - if (ret < 0) -- goto out; -+ goto out_unlock; - prev_extent_end = range_end; - } - -@@ -3166,28 +3247,16 @@ check_eof_delalloc: - const u64 i_size = i_size_read(&inode->vfs_inode); - - if (prev_extent_end < i_size) { -- struct extent_state *cached_state = NULL; - u64 delalloc_start; - u64 delalloc_end; -- u64 lockstart; -- u64 lockend; - bool delalloc; - -- lockstart = round_down(prev_extent_end, sectorsize); -- lockend = round_up(i_size, sectorsize); -- -- /* -- * See the comment in fiemap_process_hole as to why -- * we're doing the locking here. -- */ -- lock_extent(&inode->io_tree, lockstart, lockend, &cached_state); - delalloc = btrfs_find_delalloc_in_range(inode, - prev_extent_end, - i_size - 1, - &delalloc_cached_state, - &delalloc_start, - &delalloc_end); -- unlock_extent(&inode->io_tree, lockstart, lockend, &cached_state); - if (!delalloc) - cache.flags |= FIEMAP_EXTENT_LAST; - } else { -@@ -3195,9 +3264,39 @@ check_eof_delalloc: - } - } - -+out_unlock: -+ unlock_extent(&inode->io_tree, range_start, range_end, &cached_state); -+ -+ if (ret == BTRFS_FIEMAP_FLUSH_CACHE) { -+ btrfs_release_path(path); -+ ret = flush_fiemap_cache(fieinfo, &cache); -+ if (ret) -+ goto out; -+ len -= cache.next_search_offset - start; -+ start = cache.next_search_offset; -+ goto restart; -+ } else if (ret < 0) { -+ goto out; -+ } -+ -+ /* -+ * Must free the path before emitting to the fiemap buffer because we -+ * may have a non-cloned leaf and if the fiemap buffer is memory mapped -+ * to a file, a write into it (through btrfs_page_mkwrite()) may trigger -+ * waiting for an ordered extent that in order to complete needs to -+ * modify that leaf, therefore leading to a deadlock. -+ */ -+ btrfs_free_path(path); -+ path = NULL; -+ -+ ret = flush_fiemap_cache(fieinfo, &cache); -+ if (ret) -+ goto out; -+ - ret = emit_last_fiemap_cache(fieinfo, &cache); - out: - free_extent_state(delalloc_cached_state); -+ kfree(cache.entries); - btrfs_free_backref_share_ctx(backref_ctx); - btrfs_free_path(path); - return ret; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/md-raid5-fix-atomicity-violation-in-raid5_cache_coun-dfd2.patch new/patches.suse/md-raid5-fix-atomicity-violation-in-raid5_cache_coun-dfd2.patch --- old/patches.suse/md-raid5-fix-atomicity-violation-in-raid5_cache_coun-dfd2.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.suse/md-raid5-fix-atomicity-violation-in-raid5_cache_coun-dfd2.patch 2024-04-02 11:38:08.000000000 +0200 @@ -0,0 +1,118 @@ +From dfd2bf436709b2bccb78c2dda550dde93700efa7 Mon Sep 17 00:00:00 2001 +From: Gui-Dong Han <2045gem...@gmail.com> +Date: Fri, 12 Jan 2024 15:10:17 +0800 +Subject: [PATCH] md/raid5: fix atomicity violation in raid5_cache_count +Git-commit: dfd2bf436709b2bccb78c2dda550dde93700efa7 +Patch-mainline: v6.9-rc1 +References: bsc#1219169, CVE-2024-23307 + +In raid5_cache_count(): + if (conf->max_nr_stripes < conf->min_nr_stripes) + return 0; + return conf->max_nr_stripes - conf->min_nr_stripes; +The current check is ineffective, as the values could change immediately +after being checked. + +In raid5_set_cache_size(): + ... + conf->min_nr_stripes = size; + ... + while (size > conf->max_nr_stripes) + conf->min_nr_stripes = conf->max_nr_stripes; + ... + +Due to intermediate value updates in raid5_set_cache_size(), concurrent +execution of raid5_cache_count() and raid5_set_cache_size() may lead to +inconsistent reads of conf->max_nr_stripes and conf->min_nr_stripes. +The current checks are ineffective as values could change immediately +after being checked, raising the risk of conf->min_nr_stripes exceeding +conf->max_nr_stripes and potentially causing an integer overflow. + +This possible bug is found by an experimental static analysis tool +developed by our team. This tool analyzes the locking APIs to extract +function pairs that can be concurrently executed, and then analyzes the +instructions in the paired functions to identify possible concurrency bugs +including data races and atomicity violations. The above possible bug is +reported when our tool analyzes the source code of Linux 6.2. + +To resolve this issue, it is suggested to introduce local variables +'min_stripes' and 'max_stripes' in raid5_cache_count() to ensure the +values remain stable throughout the check. Adding locks in +raid5_cache_count() fails to resolve atomicity violations, as +raid5_set_cache_size() may hold intermediate values of +conf->min_nr_stripes while unlocked. With this patch applied, our tool no +longer reports the bug, with the kernel configuration allyesconfig for +x86_64. Due to the lack of associated hardware, we cannot test the patch +in runtime testing, and just verify it according to the code logic. + +Fixes: edbe83ab4c27 ("md/raid5: allow the stripe_cache to grow and shrink.") +Cc: sta...@vger.kernel.org +Signed-off-by: Gui-Dong Han <2045gem...@gmail.com> +Reviewed-by: Yu Kuai <yuku...@huawei.com> +Signed-off-by: Song Liu <s...@kernel.org> +Link: https://lore.kernel.org/r/20240112071017.16313-1-2045gem...@gmail.com +Signed-off-by: Song Liu <s...@kernel.org> +Signed-off-by: Coly Li <col...@suse.de> +--- + drivers/md/raid5.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c +index 14f2cf75abbd..7ec445f49f1c 100644 +--- a/drivers/md/raid5.c ++++ b/drivers/md/raid5.c +@@ -2412,7 +2412,7 @@ static int grow_one_stripe(struct r5conf *conf, gfp_t gfp) + atomic_inc(&conf->active_stripes); + + raid5_release_stripe(sh); +- conf->max_nr_stripes++; ++ WRITE_ONCE(conf->max_nr_stripes, conf->max_nr_stripes + 1); + return 1; + } + +@@ -2707,7 +2707,7 @@ static int drop_one_stripe(struct r5conf *conf) + shrink_buffers(sh); + free_stripe(conf->slab_cache, sh); + atomic_dec(&conf->active_stripes); +- conf->max_nr_stripes--; ++ WRITE_ONCE(conf->max_nr_stripes, conf->max_nr_stripes - 1); + return 1; + } + +@@ -6820,7 +6820,7 @@ raid5_set_cache_size(struct mddev *mddev, int size) + if (size <= 16 || size > 32768) + return -EINVAL; + +- conf->min_nr_stripes = size; ++ WRITE_ONCE(conf->min_nr_stripes, size); + mutex_lock(&conf->cache_size_mutex); + while (size < conf->max_nr_stripes && + drop_one_stripe(conf)) +@@ -6832,7 +6832,7 @@ raid5_set_cache_size(struct mddev *mddev, int size) + mutex_lock(&conf->cache_size_mutex); + while (size > conf->max_nr_stripes) + if (!grow_one_stripe(conf, GFP_KERNEL)) { +- conf->min_nr_stripes = conf->max_nr_stripes; ++ WRITE_ONCE(conf->min_nr_stripes, conf->max_nr_stripes); + result = -ENOMEM; + break; + } +@@ -7388,11 +7388,13 @@ static unsigned long raid5_cache_count(struct shrinker *shrink, + struct shrink_control *sc) + { + struct r5conf *conf = shrink->private_data; ++ int max_stripes = READ_ONCE(conf->max_nr_stripes); ++ int min_stripes = READ_ONCE(conf->min_nr_stripes); + +- if (conf->max_nr_stripes < conf->min_nr_stripes) ++ if (max_stripes < min_stripes) + /* unlikely, but not impossible */ + return 0; +- return conf->max_nr_stripes - conf->min_nr_stripes; ++ return max_stripes - min_stripes; + } + + static struct r5conf *setup_conf(struct mddev *mddev) +-- +2.35.3 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/wifi-ath11k-decrease-MHI-channel-buffer-length-to-8K.patch new/patches.suse/wifi-ath11k-decrease-MHI-channel-buffer-length-to-8K.patch --- old/patches.suse/wifi-ath11k-decrease-MHI-channel-buffer-length-to-8K.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.suse/wifi-ath11k-decrease-MHI-channel-buffer-length-to-8K.patch 2024-04-02 11:38:08.000000000 +0200 @@ -0,0 +1,92 @@ +From 1cca1bddf9ef080503c15378cecf4877f7510015 Mon Sep 17 00:00:00 2001 +From: Baochen Qiang <quic_bqi...@quicinc.com> +Date: Fri, 23 Feb 2024 13:31:11 +0800 +Subject: [PATCH] wifi: ath11k: decrease MHI channel buffer length to 8KB +Git-commit: 1cca1bddf9ef080503c15378cecf4877f7510015 +Patch-mainline: v6.9-rc1 +References: bsc#1207948 + +Currently buf_len field of ath11k_mhi_config_qca6390 is assigned +with 0, making MHI use a default size, 64KB, to allocate channel +buffers. This is likely to fail in some scenarios where system +memory is highly fragmented and memory compaction or reclaim is +not allowed. + +There is a fail report which is caused by it: +kworker/u32:45: page allocation failure: order:4, mode:0x40c00(GFP_NOIO|__GFP_COMP), nodemask=(null),cpuset=/,mems_allowed=0 +Cpu: 0 PID: 19318 Comm: kworker/u32:45 Not tainted 6.8.0-rc3-1.gae4495f-default #1 openSUSE Tumbleweed (unreleased) 493b6d5b382c603654d7a81fc3c144d59a1dfceb +Workqueue: events_unbound async_run_entry_fn +Call Trace: + <TASK> + dump_stack_lvl+0x47/0x60 + warn_alloc+0x13a/0x1b0 + ? srso_alias_return_thunk+0x5/0xfbef5 + ? __alloc_pages_direct_compact+0xab/0x210 + __alloc_pages_slowpath.constprop.0+0xd3e/0xda0 + __alloc_pages+0x32d/0x350 + ? mhi_prepare_channel+0x127/0x2d0 [mhi 40df44e07c05479f7a6e7b90fba9f0e0031a7814] + __kmalloc_large_node+0x72/0x110 + __kmalloc+0x37c/0x480 + ? mhi_map_single_no_bb+0x77/0xf0 [mhi 40df44e07c05479f7a6e7b90fba9f0e0031a7814] + ? mhi_prepare_channel+0x127/0x2d0 [mhi 40df44e07c05479f7a6e7b90fba9f0e0031a7814] + mhi_prepare_channel+0x127/0x2d0 [mhi 40df44e07c05479f7a6e7b90fba9f0e0031a7814] + __mhi_prepare_for_transfer+0x44/0x80 [mhi 40df44e07c05479f7a6e7b90fba9f0e0031a7814] + ? __pfx_____mhi_prepare_for_transfer+0x10/0x10 [mhi 40df44e07c05479f7a6e7b90fba9f0e0031a7814] + device_for_each_child+0x5c/0xa0 + ? __pfx_pci_pm_resume+0x10/0x10 + ath11k_core_resume+0x65/0x100 [ath11k a5094e22d7223135c40d93c8f5321cf09fd85e4e] + ? srso_alias_return_thunk+0x5/0xfbef5 + ath11k_pci_pm_resume+0x32/0x60 [ath11k_pci 830b7bfc3ea80ebef32e563cafe2cb55e9cc73ec] + ? srso_alias_return_thunk+0x5/0xfbef5 + dpm_run_callback+0x8c/0x1e0 + device_resume+0x104/0x340 + ? __pfx_dpm_watchdog_handler+0x10/0x10 + async_resume+0x1d/0x30 + async_run_entry_fn+0x32/0x120 + process_one_work+0x168/0x330 + worker_thread+0x2f5/0x410 + ? __pfx_worker_thread+0x10/0x10 + kthread+0xe8/0x120 + ? __pfx_kthread+0x10/0x10 + ret_from_fork+0x34/0x50 + ? __pfx_kthread+0x10/0x10 + ret_from_fork_asm+0x1b/0x30 + </TASK> + +Actually those buffers are used only by QMI target -> host communication. +And for WCN6855 and QCA6390, the largest packet size for that is less +than 6KB. So change buf_len field to 8KB, which results in order 1 +allocation if page size is 4KB. In this way, we can at least save some +memory, and as well as decrease the possibility of allocation failure +in those scenarios. + +Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.30 + +Reported-by: Vlastimil Babka <vba...@suse.cz> +Closes: https://lore.kernel.org/ath11k/96481a45-3547-4d23-ad34-3a8f1d90c...@suse.cz/ +Signed-off-by: Baochen Qiang <quic_bqi...@quicinc.com> +Acked-by: Jeff Johnson <quic_jjohn...@quicinc.com> +Signed-off-by: Kalle Valo <quic_kv...@quicinc.com> +Link: https://msgid.link/20240223053111.29170-1-quic_bqi...@quicinc.com +Acked-by: Takashi Iwai <ti...@suse.de> + +--- + drivers/net/wireless/ath/ath11k/mhi.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/ath/ath11k/mhi.c b/drivers/net/wireless/ath/ath11k/mhi.c +index 3de7fa6f88d0..522175aac5e7 100644 +--- a/drivers/net/wireless/ath/ath11k/mhi.c ++++ b/drivers/net/wireless/ath/ath11k/mhi.c +@@ -78,7 +78,7 @@ static struct mhi_controller_config ath11k_mhi_config_qca6390 = { + .max_channels = 128, + .timeout_ms = 2000, + .use_bounce_buf = false, +- .buf_len = 0, ++ .buf_len = 8192, + .num_channels = ARRAY_SIZE(ath11k_mhi_channels_qca6390), + .ch_cfg = ath11k_mhi_channels_qca6390, + .num_events = ARRAY_SIZE(ath11k_mhi_events_qca6390), +-- +2.43.0 + ++++++ series.conf ++++++ ++++ 745 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/kernel-source/series.conf ++++ and /work/SRC/openSUSE:Factory/.kernel-source.new.1905/series.conf ++++++ source-timestamp ++++++ --- /var/tmp/diff_new_pack.MbhFI8/_old 2024-04-03 17:18:23.689027927 +0200 +++ /var/tmp/diff_new_pack.MbhFI8/_new 2024-04-03 17:18:23.693028075 +0200 @@ -1,4 +1,4 @@ -2024-03-19 07:32:20 +0000 -GIT Revision: d922afa2ed7e029a09447a9cdd3a52de7fa2fef8 +2024-04-02 09:38:08 +0000 +GIT Revision: 2eb0f0f67053d9d94ab7bc023cc977261c47ce8a GIT Branch: stable