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
 

Reply via email to