6.16.12-rc1 review
Subsystems (2)
Greg Kroah-Hartman
maintainercover 6.16.12-rc1 review
This is the start of the stable review cycle for the 6.16.12 release. There are 41 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 12 Oct 2025 13:13:18 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.16.12-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.16.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 6.16.12-rc1
Ankit Khushwaha <[email protected]>
ring buffer: Propagate __rb_map_vma return value to caller
Sean Christopherson <[email protected]>
KVM: x86: Don't (re)check L1 intercepts when completing userspace I/O
Nalivayko Sergey <[email protected]>
net/9p: fix double req put in p9_fd_cancelled
Herbert Xu <[email protected]>
crypto: rng - Ensure set_ent is always present
Rafael J. Wysocki <[email protected]>
driver core/PM: Set power.no_callbacks along with power.no_pm
Rafael J. Wysocki <[email protected]>
driver core: faux: Set power.no_pm for faux devices
Ovidiu Panait <[email protected]>
staging: axis-fifo: flush RX FIFO on read errors
Ovidiu Panait <[email protected]>
staging: axis-fifo: fix TX handling on copy_from_user() failure
Ovidiu Panait <[email protected]>
staging: axis-fifo: fix maximum TX packet length check
Raphael Gallais-Pou <[email protected]>
serial: stm32: allow selecting console when the driver is module
Carlos Llamas <[email protected]>
binder: fix double-free in dbitmap
Max Kellermann <[email protected]>
drivers/misc/amd-sbi/Kconfig: select REGMAP_I2C
Michael Walle <[email protected]>
nvmem: layouts: fix automatic module loading
Arnaud Lecomte <[email protected]>
hid: fix I2C read buffer overflow in raw_event() for mcp2221
Christoffer Sandberg <[email protected]>
platform/x86/amd/pmc: Add Stellaris Slim Gen6 AMD to spurious 8042 quirks list
Duy Nguyen <[email protected]>
can: rcar_canfd: Fix controller mode setting
Chen Yufeng <[email protected]>
can: hi311x: fix null pointer dereference when resuming from sleep before interface was enabled
Jason Gunthorpe <[email protected]>
iommufd: WARN if an object is aborted with an elevated refcount
Lizhi Xu <[email protected]>
netfs: Prevent duplicate unlocking
David Sterba <[email protected]>
btrfs: ref-verify: handle damaged extent root tree
Jack Yu <[email protected]>
ASoC: rt5682s: Adjust SAR ADC button mode to fix noise issue
Shyam Sundar S K <[email protected]>
platform/x86/amd/pmf: Support new ACPI ID AMDI0108
Srinivasan Shanmugam <[email protected]>
drm/amdgpu/gfx11: Add Cleaner Shader Support for GFX11.0.1/11.0.4 GPUs
hupu <[email protected]>
perf subcmd: avoid crash in exclude_cmds when excludes is empty
Antheas Kapenekakis <[email protected]>
platform/x86: oxpec: Add support for OneXPlayer X1Pro EVA-02
aprilgrimoire <[email protected]>
platform/x86/amd/pmc: Add MECHREVO Yilong15Pro to spurious_8042 list
Mikulas Patocka <[email protected]>
dm-integrity: limit MAX_TAG_SIZE to 255
Venkata Prasad Potturu <[email protected]>
ASoC: amd: acp: Adjust pdm gain value
Shuming Fan <[email protected]>
ASoC: rt712: avoid skipping the blind write
Antheas Kapenekakis <[email protected]>
gpiolib: acpi: Ignore touchpad wakeup on GPD G1619-05
Rahul Rameshbabu <[email protected]>
rust: pci: fix incorrect platform reference in PCI driver probe doc comment
Miguel Ojeda <[email protected]>
rust: block: fix srctree/ links
Miguel Ojeda <[email protected]>
rust: drm: fix srctree/ links
Bitterblue Smith <[email protected]>
wifi: rtl8xxxu: Don't claim USB ID 07b8:8188
Bitterblue Smith <[email protected]>
wifi: rtlwifi: rtl8192cu: Don't claim USB ID 07b8:8188
Zenm Chen <[email protected]>
Bluetooth: btusb: Add USB ID 2001:332a for D-Link AX9U rev. A1
Xiaowei Li <[email protected]>
USB: serial: option: add SIMCom 8230C compositions
Fedor Pchelkin <[email protected]>
wifi: rtw89: fix use-after-free in rtw89_core_tx_kick_off_and_wait()
Chih-Kang Chang <[email protected]>
wifi: rtw89: mcc: stop TX during MCC prepare
Mario Limonciello <[email protected]>
drm/amdgpu: Enable MES lr_compute_wa by default
Shenghao Ding <[email protected]>
ALSA: hda/tas2781: Fix the order of TAS2781 calibrated-data
-------------
Diffstat:
Makefile | 4 +- arch/x86/kvm/emulate.c | 9 ++- arch/x86/kvm/kvm_emulate.h | 3 +- arch/x86/kvm/x86.c | 15 ++--- crypto/rng.c | 8 +++ drivers/android/dbitmap.h | 1 + drivers/base/faux.c | 1 + drivers/bluetooth/btusb.c | 2 + drivers/gpio/gpiolib-acpi-quirks.c | 12 ++++ drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 15 +++++ drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 6 ++ drivers/gpu/drm/amd/amdgpu/mes_v12_0.c | 5 ++ drivers/gpu/drm/amd/include/mes_v11_api_def.h | 3 +- drivers/gpu/drm/amd/include/mes_v12_api_def.h | 3 +- drivers/hid/hid-mcp2221.c | 4 ++ drivers/iommu/iommufd/device.c | 3 +- drivers/iommu/iommufd/iommufd_private.h | 3 +- drivers/iommu/iommufd/main.c | 4 ++ drivers/md/dm-integrity.c | 2 +- drivers/misc/amd-sbi/Kconfig | 1 + drivers/net/can/rcar/rcar_canfd.c | 7 ++- drivers/net/can/spi/hi311x.c | 33 ++++++----- drivers/net/wireless/realtek/rtl8xxxu/core.c | 2 - .../net/wireless/realtek/rtlwifi/rtl8192cu/sw.c | 1 - drivers/net/wireless/realtek/rtw89/chan.c | 35 +++++++++++ drivers/net/wireless/realtek/rtw89/chan.h | 2 + drivers/net/wireless/realtek/rtw89/core.c | 32 ++++++++-- drivers/net/wireless/realtek/rtw89/core.h | 37 +++++++++++- drivers/net/wireless/realtek/rtw89/pci.c | 3 +- drivers/net/wireless/realtek/rtw89/ser.c | 2 + drivers/nvmem/layouts.c | 13 +++++ drivers/platform/x86/amd/pmc/pmc-quirks.c | 15 +++++ drivers/platform/x86/amd/pmf/core.c | 1 + drivers/platform/x86/oxpec.c | 7 +++ drivers/staging/axis-fifo/axis-fifo.c | 68 ++++++++++------------ drivers/tty/serial/Kconfig | 2 +- drivers/usb/serial/option.c | 6 ++ fs/btrfs/ref-verify.c | 9 ++- fs/netfs/buffered_write.c | 2 +- include/linux/device.h | 3 + kernel/trace/ring_buffer.c | 2 +- net/9p/trans_fd.c | 8 +-- rust/kernel/block/mq/gen_disk.rs | 2 +- rust/kernel/drm/device.rs | 2 +- rust/kernel/drm/driver.rs | 2 +- rust/kernel/drm/file.rs | 2 +- rust/kernel/drm/gem/mod.rs | 2 +- rust/kernel/drm/ioctl.rs | 2 +- rust/kernel/pci.rs | 4 +- sound/pci/hda/tas2781_hda.c | 25 ++++++-- sound/soc/amd/acp/amd.h | 2 +- sound/soc/codecs/rt5682s.c | 17 +++--- sound/soc/codecs/rt712-sdca.c | 6 +- tools/lib/subcmd/help.c | 3 + 54 files changed, 339 insertions(+), 124 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/41 ALSA: hda/tas2781: Fix the order of TAS2781 calibrated-data
6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shenghao Ding <[email protected]>
commit 71d2893a235bf3b95baccead27b3d47f2f2cdc4c upstream.
A bug reported by one of my customers that the order of TAS2781 calibrated-data is incorrect, the correct way is to move R0_Low and insert it between R0 and InvR0.
--- sound/pci/hda/tas2781_hda.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-)
sound/pci/hda/tas2781_hda.c +20 -5
@@ -31,6 +31,23 @@ const efi_guid_t tasdev_fct_efi_guid[] = };EXPORT_SYMBOL_NS_GPL (tasdev_fct_efi_guid,"SND_HDA_SCODEC_TAS2781" ); +/* +* The order of calibrated-data writing function is a bit different from the +* order in UEFI. Here is the conversion to match the order of calibrated-data +* writing function. +*/ +static void cali_cnv (unsigned char *data,unsigned int base,int offset) +{ +struct cali_reg reg_data; + +memcpy (®_data, &data[base],sizeof (reg_data)); +/* the data order has to be swapped between r0_low_reg and inv0_reg */ +swap (reg_data.r0_low_reg, reg_data.invr0_reg); + +cpu_to_be32_array ((__force __be32 *)(data + offset +1 ), + (u32 *)®_data,TASDEV_CALIB_N ); +} +static void tas2781_apply_calib (struct tasdevice_priv *p) {struct calidata *cali_data = &p->cali_data;
@@ -101,8 +118,7 @@ static void tas2781_apply_calib(struct t data[l] = k; oft++; -for (i =0 ; i <TASDEV_CALIB_N *4 ; i++) - data[l + i +1 ] = data[4 * oft + i]; +cali_cnv (data,4 * oft, l); k++; } }
@@ -128,9 +144,8 @@ static void tas2781_apply_calib(struct tfor (j = p->ndev -1 ; j >=0 ; j--) { l = j * (cali_data->cali_dat_sz_per_dev +1 ); -for (i =TASDEV_CALIB_N *4 ; i >0 ; i--) - data[l + i] = data[p->index *5 + i]; - data[l+i] = j; +cali_cnv (data, cali_data->cali_dat_sz_per_dev * j, l); + data[l] = j; } }
Greg Kroah-Hartman
maintainerPATCH 2/41 drm/amdgpu: Enable MES lr_compute_wa by default
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mario Limonciello <[email protected]>
commit 1fb710793ce2619223adffaf981b1ff13cd48f17 upstream.
The MES set resources packet has an optional bit 'lr_compute_wa' which can be used for preventing MES hangs on long compute jobs.
Set this bit by default.
--- drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 6 ++++++ drivers/gpu/drm/amd/amdgpu/mes_v12_0.c | 5 +++++ drivers/gpu/drm/amd/include/mes_v11_api_def.h | 3 ++- drivers/gpu/drm/amd/include/mes_v12_api_def.h | 3 ++- 4 files changed, 15 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/amdgpu/mes_v11_0.c +6 -0
@@ -711,6 +711,12 @@ static int mes_v11_0_set_hw_resources(st mes_set_hw_res_pkt.enable_reg_active_poll =1 ; mes_set_hw_res_pkt.enable_level_process_quantum_check =1 ; mes_set_hw_res_pkt.oversubscription_timer =50 ; +if ((mes->adev->mes.sched_version &AMDGPU_MES_VERSION_MASK ) >=0x7f ) + mes_set_hw_res_pkt.enable_lr_compute_wa =1 ; +else +dev_info_once (mes->adev->dev, +"MES FW version must be >= 0x7f to enable LR compute workaround.\n" ); +if (amdgpu_mes_log_enable) { mes_set_hw_res_pkt.enable_mes_event_int_logging =1 ; mes_set_hw_res_pkt.event_intr_history_gpu_mc_ptr =
drivers/gpu/drm/amd/amdgpu/mes_v12_0.c +5 -0
@@ -738,6 +738,11 @@ static int mes_v12_0_set_hw_resources(st mes_set_hw_res_pkt.use_different_vmid_compute =1 ; mes_set_hw_res_pkt.enable_reg_active_poll =1 ; mes_set_hw_res_pkt.enable_level_process_quantum_check =1 ; +if ((mes->adev->mes.sched_version &AMDGPU_MES_VERSION_MASK ) >=0x82 ) + mes_set_hw_res_pkt.enable_lr_compute_wa =1 ; +else +dev_info_once (adev->dev, +"MES FW version must be >= 0x82 to enable LR compute workaround.\n" );/* * Keep oversubscribe timer for sdma . When we have unmapped doorbell
drivers/gpu/drm/amd/include/mes_v11_api_def.h +2 -1
@@ -238,7 +238,8 @@ union MESAPI_SET_HW_RESOURCES { uint32_t enable_mes_sch_stb_log : 1; uint32_t limit_single_process : 1; uint32_t is_strix_tmz_wa_enabled :1; - uint32_t reserved : 13; + uint32_t enable_lr_compute_wa : 1; + uint32_t reserved : 12; };uint32_t uint32_t_all; };
drivers/gpu/drm/amd/include/mes_v12_api_def.h +2 -1
@@ -286,7 +286,8 @@ union MESAPI_SET_HW_RESOURCES { uint32_t limit_single_process : 1; uint32_t unmapped_doorbell_handling: 2; uint32_t enable_mes_fence_int: 1; - uint32_t reserved : 10; + uint32_t enable_lr_compute_wa : 1; + uint32_t reserved : 9; };uint32_t uint32_all; };
Greg Kroah-Hartman
maintainerPATCH 3/41 wifi: rtw89: mcc: stop TX during MCC prepare
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chih-Kang Chang <[email protected]>
[ Upstream commit 182c7ff8b87e4edbb2227ede39ae0952da7a0f4a ]
Stop TX during the MCC configuration period to prevent packet leakage. The stop time is defined as 'start_tsf - tsf', which means the duration from when MCC configuration begins until MCC starts.
Stable-dep-of: 3e31a6bc0731 ("wifi: rtw89: fix use-after-free in rtw89_core_tx_kick_off_and_wait()")
--- drivers/net/wireless/realtek/rtw89/chan.c | 35 ++++++++++++++++++++++++++++++ drivers/net/wireless/realtek/rtw89/chan.h | 2 + drivers/net/wireless/realtek/rtw89/core.c | 2 + drivers/net/wireless/realtek/rtw89/core.h | 2 + 4 files changed, 41 insertions(+)
drivers/net/wireless/realtek/rtw89/chan.c +35 -0
@@ -1595,6 +1595,35 @@ static bool rtw89_mcc_duration_decision_return false; } +void rtw89_mcc_prepare_done_work (struct wiphy *wiphy,struct wiphy_work *work) +{ + struct rtw89_dev *rtwdev = container_of(work, struct rtw89_dev, + mcc_prepare_done_work.work); + +lockdep_assert_wiphy (wiphy); + +ieee80211_wake_queues (rtwdev->hw); +} + +static void rtw89_mcc_prepare (struct rtw89_dev *rtwdev,bool start) +{ +struct rtw89_mcc_info *mcc = &rtwdev->mcc; +struct rtw89_mcc_config *config = &mcc->config; + +if (start) { +ieee80211_stop_queues (rtwdev->hw); + +wiphy_delayed_work_queue (rtwdev->hw->wiphy, + &rtwdev->mcc_prepare_done_work, +usecs_to_jiffies (config->prepare_delay)); + }else { +wiphy_delayed_work_queue (rtwdev->hw->wiphy, + &rtwdev->mcc_prepare_done_work,0 ); +wiphy_delayed_work_flush (rtwdev->hw->wiphy, + &rtwdev->mcc_prepare_done_work); + } +} +static int rtw89_mcc_fill_start_tsf (struct rtw89_dev *rtwdev) {struct rtw89_mcc_info *mcc = &rtwdev->mcc;
@@ -1630,6 +1659,8 @@ static int rtw89_mcc_fill_start_tsf(stru config->start_tsf = start_tsf; config->start_tsf_in_aux_domain = tsf_aux + start_tsf - tsf; + config->prepare_delay = start_tsf - tsf; +return 0 ; }
@@ -2219,6 +2250,8 @@ static int rtw89_mcc_start(struct rtw89_rtw89_chanctx_notify (rtwdev,RTW89_CHANCTX_STATE_MCC_START );rtw89_mcc_start_beacon_noa (rtwdev); + +rtw89_mcc_prepare (rtwdev, true);return 0 ; }
@@ -2307,6 +2340,8 @@ static void rtw89_mcc_stop(struct rtw89_rtw89_chanctx_notify (rtwdev,RTW89_CHANCTX_STATE_MCC_STOP );rtw89_mcc_stop_beacon_noa (rtwdev); + +rtw89_mcc_prepare (rtwdev, false); }static int rtw89_mcc_update (struct rtw89_dev *rtwdev)
drivers/net/wireless/realtek/rtw89/chan.h +2 -0
@@ -129,6 +129,8 @@ const struct rtw89_chan *__rtw89_mgnt_ch#define rtw89_mgnt_chan_get (rtwdev, link_index) \ __rtw89_mgnt_chan_get(rtwdev, __func__, link_index) +void rtw89_mcc_prepare_done_work (struct wiphy *wiphy,struct wiphy_work *work); +int rtw89_chanctx_ops_add (struct rtw89_dev *rtwdev,struct ieee80211_chanctx_conf *ctx); void rtw89_chanctx_ops_remove(struct rtw89_dev *rtwdev,
drivers/net/wireless/realtek/rtw89/core.c +2 -0
@@ -4816,6 +4816,7 @@ void rtw89_core_stop(struct rtw89_dev *rwiphy_delayed_work_cancel (wiphy, &rtwdev->coex_bt_devinfo_work);wiphy_delayed_work_cancel (wiphy, &rtwdev->coex_rfk_chk_work);wiphy_delayed_work_cancel (wiphy, &rtwdev->cfo_track_work); +wiphy_delayed_work_cancel (wiphy, &rtwdev->mcc_prepare_done_work);cancel_delayed_work_sync (&rtwdev->forbid_ba_work);wiphy_delayed_work_cancel (wiphy, &rtwdev->antdiv_work);
@@ -5042,6 +5043,7 @@ int rtw89_core_init(struct rtw89_dev *rtwiphy_delayed_work_init (&rtwdev->coex_bt_devinfo_work, rtw89_coex_bt_devinfo_work);wiphy_delayed_work_init (&rtwdev->coex_rfk_chk_work, rtw89_coex_rfk_chk_work);wiphy_delayed_work_init (&rtwdev->cfo_track_work, rtw89_phy_cfo_track_work); +wiphy_delayed_work_init (&rtwdev->mcc_prepare_done_work, rtw89_mcc_prepare_done_work);INIT_DELAYED_WORK (&rtwdev->forbid_ba_work, rtw89_forbid_ba_work);wiphy_delayed_work_init (&rtwdev->antdiv_work, rtw89_phy_antdiv_work); rtwdev->txq_wq =alloc_workqueue ("rtw89_tx_wq" ,WQ_UNBOUND |WQ_HIGHPRI ,0 );
drivers/net/wireless/realtek/rtw89/core.h +2 -0
@@ -5728,6 +5728,7 @@ struct rtw89_mcc_config {struct rtw89_mcc_sync sync;u64 start_tsf;u64 start_tsf_in_aux_domain; +u64 prepare_delay;u16 mcc_interval;/* TU */ u16 beacon_offset;/* TU */ };
@@ -5858,6 +5859,7 @@ struct rtw89_dev {struct wiphy_delayed_work coex_bt_devinfo_work;struct wiphy_delayed_work coex_rfk_chk_work;struct wiphy_delayed_work cfo_track_work; +struct wiphy_delayed_work mcc_prepare_done_work;struct delayed_work forbid_ba_work;struct wiphy_delayed_work antdiv_work;struct rtw89_ppdu_sts_info ppdu_sts;
Greg Kroah-Hartman
maintainerPATCH 4/41 wifi: rtw89: fix use-after-free in rtw89_core_tx_kick_off_and_wait()
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Fedor Pchelkin <[email protected]>
[ Upstream commit 3e31a6bc07312b448fad3b45de578471f86f0e77 ]
There is a bug observed when rtw89_core_tx_kick_off_and_wait() tries to access already freed skb_data:
BUG: KFENCE: use-after-free write in rtw89_core_tx_kick_off_and_wait drivers/net/wireless/realtek/rtw89/core.c:1110 CPU: 6 UID: 0 PID: 41377 Comm: kworker/u64:24 Not tainted 6.17.0-rc1+ #1 PREEMPT(lazy) Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS edk2-20250523-14.fc42 05/23/2025 Workqueue: events_unbound cfg80211_wiphy_work [cfg80211]
Use-after-free write at 0x0000000020309d9d (in kfence-#251):
rtw89_core_tx_kick_off_and_wait drivers/net/wireless/realtek/rtw89/core.c:1110 rtw89_core_scan_complete drivers/net/wireless/realtek/rtw89/core.c:5338 rtw89_hw_scan_complete_cb drivers/net/wireless/realtek/rtw89/fw.c:7979 rtw89_chanctx_proceed_cb drivers/net/wireless/realtek/rtw89/chan.c:3165 rtw89_chanctx_proceed drivers/net/wireless/realtek/rtw89/chan.h:141 rtw89_hw_scan_complete drivers/net/wireless/realtek/rtw89/fw.c:8012 rtw89_mac_c2h_scanofld_rsp drivers/net/wireless/realtek/rtw89/mac.c:5059 rtw89_fw_c2h_work drivers/net/wireless/realtek/rtw89/fw.c:6758 process_one_work kernel/workqueue.c:3241 worker_thread kernel/workqueue.c:3400 kthread kernel/kthread.c:463 ret_from_fork arch/x86/kernel/process.c:154 ret_from_fork_asm arch/x86/entry/entry_64.S:258
kfence-#251: 0x0000000056e2393d-0x000000009943cb62, size=232, cache=skbuff_head_cache
allocated by task 41377 on cpu 6 at 77869.159548s (0.009551s ago):
__alloc_skb net/core/skbuff.c:659 __netdev_alloc_skb net/core/skbuff.c:734 ieee80211_nullfunc_get net/mac80211/tx.c:5844 rtw89_core_send_nullfunc drivers/net/wireless/realtek/rtw89/core.c:3431 rtw89_core_scan_complete drivers/net/wireless/realtek/rtw89/core.c:5338 rtw89_hw_scan_complete_cb drivers/net/wireless/realtek/rtw89/fw.c:7979 rtw89_chanctx_proceed_cb drivers/net/wireless/realtek/rtw89/chan.c:3165 rtw89_chanctx_proceed drivers/net/wireless/realtek/rtw89/chan.c:3194 rtw89_hw_scan_complete drivers/net/wireless/realtek/rtw89/fw.c:8012 rtw89_mac_c2h_scanofld_rsp drivers/net/wireless/realtek/rtw89/mac.c:5059 rtw89_fw_c2h_work drivers/net/wireless/realtek/rtw89/fw.c:6758 process_one_work kernel/workqueue.c:3241 worker_thread kernel/workqueue.c:3400 kthread kernel/kthread.c:463 ret_from_fork arch/x86/kernel/process.c:154 ret_from_fork_asm arch/x86/entry/entry_64.S:258
freed by task 1045 on cpu 9 at 77869.168393s (0.001557s ago):
ieee80211_tx_status_skb net/mac80211/status.c:1117 rtw89_pci_release_txwd_skb drivers/net/wireless/realtek/rtw89/pci.c:564 rtw89_pci_release_tx_skbs.isra.0 drivers/net/wireless/realtek/rtw89/pci.c:651 rtw89_pci_release_tx drivers/net/wireless/realtek/rtw89/pci.c:676 rtw89_pci_napi_poll drivers/net/wireless/realtek/rtw89/pci.c:4238 __napi_poll net/core/dev.c:7495 net_rx_action net/core/dev.c:7557 net/core/dev.c:7684 handle_softirqs kernel/softirq.c:580 do_softirq.part.0 kernel/softirq.c:480 __local_bh_enable_ip kernel/softirq.c:407 rtw89_pci_interrupt_threadfn drivers/net/wireless/realtek/rtw89/pci.c:927 irq_thread_fn kernel/irq/manage.c:1133 irq_thread kernel/irq/manage.c:1257 kthread kernel/kthread.c:463 ret_from_fork arch/x86/kernel/process.c:154 ret_from_fork_asm arch/x86/entry/entry_64.S:258
It is a consequence of a race between the waiting and the signaling side of the completion:
Waiting thread Completing thread
rtw89_core_tx_kick_off_and_wait()
rcu_assign_pointer(skb_data->wait, wait)
/* start waiting */
wait_for_completion_timeout()
rtw89_pci_tx_status()
rtw89_core_tx_wait_complete()
rcu_read_lock()
/* signals completion and
* proceeds further
*/
complete(&wait->completion)
rcu_read_unlock()
...
/* frees skb_data */
ieee80211_tx_status_ni() /* returns (exit status doesn't matter) */
wait_for_completion_timeout()
...
/* accesses the already freed skb_data */
rcu_assign_pointer(skb_data->wait, NULL)
The completing side might proceed and free the underlying skb even before the waiting side is fully awoken and run to execution. Actually the race happens regardless of wait_for_completion_timeout() exit status, e.g. the waiting side may hit a timeout and the concurrent completing side is still able to free the skb.
Skbs which are sent by rtw89_core_tx_kick_off_and_wait() are owned by the driver. They don't come from core ieee80211 stack so no need to pass them to ieee80211_tx_status_ni() on completing side.
Introduce a work function which will act as a garbage collector for rtw89_tx_wait_info objects and the associated skbs. Thus no potentially heavy locks are required on the completing side.
Found by Linux Verification Center (linuxtesting.org).
--- drivers/net/wireless/realtek/rtw89/core.c | 30 ++++++++++++++++++++----- drivers/net/wireless/realtek/rtw89/core.h | 35 ++++++++++++++++++++++++++++-- drivers/net/wireless/realtek/rtw89/pci.c | 3 +- drivers/net/wireless/realtek/rtw89/ser.c | 2 + 4 files changed, 61 insertions(+), 9 deletions(-)
drivers/net/wireless/realtek/rtw89/core.c +24 -6
@@ -1050,6 +1050,14 @@ rtw89_core_tx_update_desc_info(struct rt } } +static void rtw89_tx_wait_work (struct wiphy *wiphy,struct wiphy_work *work) +{ + struct rtw89_dev *rtwdev = container_of(work, struct rtw89_dev, + tx_wait_work.work); + +rtw89_tx_wait_list_clear (rtwdev); +} +void rtw89_core_tx_kick_off (struct rtw89_dev *rtwdev,u8 qsel) {u8 ch_dma;
@@ -1067,6 +1075,8 @@ int rtw89_core_tx_kick_off_and_wait(struunsigned long time_left;int ret =0 ; +lockdep_assert_wiphy (rtwdev->hw->wiphy); + wait =kzalloc (sizeof (*wait),GFP_KERNEL );if (!wait) {rtw89_core_tx_kick_off (rtwdev, qsel);
@@ -1074,18 +1084,23 @@ int rtw89_core_tx_kick_off_and_wait(stru }init_completion (&wait->completion); + wait->skb = skb;rcu_assign_pointer (skb_data->wait, wait);rtw89_core_tx_kick_off (rtwdev, qsel); time_left =wait_for_completion_timeout (&wait->completion,msecs_to_jiffies (timeout)); -if (time_left ==0 ) - ret = -ETIMEDOUT ; -else if (!wait->tx_done) - ret = -EAGAIN ; -rcu_assign_pointer (skb_data->wait,NULL ); -kfree_rcu (wait, rcu_head); +if (time_left ==0 ) { + ret = -ETIMEDOUT ; +list_add_tail (&wait->list, &rtwdev->tx_waits); +wiphy_delayed_work_queue (rtwdev->hw->wiphy, &rtwdev->tx_wait_work, +RTW89_TX_WAIT_WORK_TIMEOUT ); + }else { +if (!wait->tx_done) + ret = -EAGAIN ; +rtw89_tx_wait_release (wait); + }return ret; }
@@ -4810,6 +4825,7 @@ void rtw89_core_stop(struct rtw89_dev *rwiphy_work_cancel (wiphy, &btc->dhcp_notify_work);wiphy_work_cancel (wiphy, &btc->icmp_notify_work);cancel_delayed_work_sync (&rtwdev->txq_reinvoke_work); +wiphy_delayed_work_cancel (wiphy, &rtwdev->tx_wait_work);wiphy_delayed_work_cancel (wiphy, &rtwdev->track_work);wiphy_delayed_work_cancel (wiphy, &rtwdev->chanctx_work);wiphy_delayed_work_cancel (wiphy, &rtwdev->coex_act1_work);
@@ -5034,6 +5050,7 @@ int rtw89_core_init(struct rtw89_dev *rtINIT_LIST_HEAD (&rtwdev->scan_info.pkt_list[band]); }INIT_LIST_HEAD (&rtwdev->scan_info.chan_list); +INIT_LIST_HEAD (&rtwdev->tx_waits);INIT_WORK (&rtwdev->ba_work, rtw89_core_ba_work);INIT_WORK (&rtwdev->txq_work, rtw89_core_txq_work);INIT_DELAYED_WORK (&rtwdev->txq_reinvoke_work, rtw89_core_txq_reinvoke_work);
@@ -5044,6 +5061,7 @@ int rtw89_core_init(struct rtw89_dev *rtwiphy_delayed_work_init (&rtwdev->coex_rfk_chk_work, rtw89_coex_rfk_chk_work);wiphy_delayed_work_init (&rtwdev->cfo_track_work, rtw89_phy_cfo_track_work);wiphy_delayed_work_init (&rtwdev->mcc_prepare_done_work, rtw89_mcc_prepare_done_work); +wiphy_delayed_work_init (&rtwdev->tx_wait_work, rtw89_tx_wait_work);INIT_DELAYED_WORK (&rtwdev->forbid_ba_work, rtw89_forbid_ba_work);wiphy_delayed_work_init (&rtwdev->antdiv_work, rtw89_phy_antdiv_work); rtwdev->txq_wq =alloc_workqueue ("rtw89_tx_wq" ,WQ_UNBOUND |WQ_HIGHPRI ,0 );
drivers/net/wireless/realtek/rtw89/core.h +33 -2
@@ -3429,9 +3429,12 @@ struct rtw89_phy_rate_pattern {bool enable; }; +#define RTW89_TX_WAIT_WORK_TIMEOUT msecs_to_jiffies(500)struct rtw89_tx_wait_info {struct rcu_head rcu_head; +struct list_head list;struct completion completion; +struct sk_buff *skb;bool tx_done; };
@@ -5802,6 +5805,9 @@ struct rtw89_dev {/* used to protect rpwm */ spinlock_t rpwm_lock; +struct list_head tx_waits; +struct wiphy_delayed_work tx_wait_work; +struct rtw89_cam_info cam_info;struct sk_buff_head c2h_queue;
@@ -6056,6 +6062,26 @@ rtw89_assoc_link_rcu_dereference(structlist_first_entry_or_null (&p->dlink_pool,typeof (*p->links_inst), dlink_schd); \ }) +static inline void rtw89_tx_wait_release (struct rtw89_tx_wait_info *wait) +{ +dev_kfree_skb_any (wait->skb); +kfree_rcu (wait, rcu_head); +} + +static inline void rtw89_tx_wait_list_clear (struct rtw89_dev *rtwdev) +{ +struct rtw89_tx_wait_info *wait, *tmp; + +lockdep_assert_wiphy (rtwdev->hw->wiphy); + +list_for_each_entry_safe (wait, tmp, &rtwdev->tx_waits, list) { +if (!completion_done (&wait->completion)) +continue ; +list_del (&wait->list); +rtw89_tx_wait_release (wait); + } +} +static inline int rtw89_hci_tx_write (struct rtw89_dev *rtwdev,struct rtw89_core_tx_request *tx_req) {
@@ -6065,6 +6091,7 @@ static inline int rtw89_hci_tx_write(strstatic inline void rtw89_hci_reset (struct rtw89_dev *rtwdev) { rtwdev->hci.ops->reset (rtwdev); +rtw89_tx_wait_list_clear (rtwdev); }static inline int rtw89_hci_start (struct rtw89_dev *rtwdev)
@@ -7122,11 +7149,12 @@ static inline struct sk_buff *rtw89_alloreturn dev_alloc_skb (length); } -static inline void rtw89_core_tx_wait_complete (struct rtw89_dev *rtwdev, +static inline bool rtw89_core_tx_wait_complete (struct rtw89_dev *rtwdev,struct rtw89_tx_skb_data *skb_data,bool tx_done) {struct rtw89_tx_wait_info *wait; +bool ret = false;rcu_read_lock ();
@@ -7134,11 +7162,14 @@ static inline void rtw89_core_tx_wait_coif (!wait) goto out; + ret = true; wait->tx_done = tx_done; -complete (&wait->completion); +/* Don't access skb anymore after completion */ +complete_all (&wait->completion); out:rcu_read_unlock (); +return ret; }static inline bool rtw89_is_mlo_1_1 (struct rtw89_dev *rtwdev)
drivers/net/wireless/realtek/rtw89/pci.c +2 -1
@@ -464,7 +464,8 @@ static void rtw89_pci_tx_status(struct rstruct rtw89_tx_skb_data *skb_data =RTW89_TX_SKB_CB (skb);struct ieee80211_tx_info *info; -rtw89_core_tx_wait_complete (rtwdev, skb_data, tx_status ==RTW89_TX_DONE ); +if (rtw89_core_tx_wait_complete (rtwdev, skb_data, tx_status ==RTW89_TX_DONE )) +return ; info =IEEE80211_SKB_CB (skb);ieee80211_tx_info_clear_status (info);
drivers/net/wireless/realtek/rtw89/ser.c +2 -0
@@ -501,7 +501,9 @@ static void ser_reset_trx_st_hdl(struct }drv_stop_rx (ser); +wiphy_lock (wiphy);drv_trx_reset (ser); +wiphy_unlock (wiphy);/* wait m3 */ hal_send_m2_event (ser);
Greg Kroah-Hartman
maintainerPATCH 5/41 USB: serial: option: add SIMCom 8230C compositions
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xiaowei Li <[email protected]>
commit 0e0ba0ecec3d6e819e0c2348331ff99afe2eb5d5 upstream.
Add support for SIMCom 8230C which is based on Qualcomm SDX35 chip.
USB Device Listings:
0x9071: tty (DM) + tty (NMEA) + tty (AT) + rmnet (QMI mode) + adb
T: Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#= 10 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1e0e ProdID=9071 Rev= 5.15 S: Manufacturer=SIMCOM S: Product=SDXBAAGHA-IDP _SN:D744C4C5 S: SerialNumber=0123456789ABCDEF C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option E: Ad=84(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan E: Ad=86(I) Atr=03(Int.) MxPS= 8 Ivl=32ms E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none) E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
0x9078: tty (DM) + tty (NMEA) + tty (AT) + ECM + adb
T: Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#= 9 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=1e0e ProdID=9078 Rev= 5.15 S: Manufacturer=SIMCOM S: Product=SDXBAAGHA-IDP _SN:D744C4C5 S: SerialNumber=0123456789ABCDEF C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option E: Ad=84(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether E: Ad=86(I) Atr=03(Int.) MxPS= 16 Ivl=32ms I: If#= 4 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether I:* If#= 4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none) E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
0x907b: RNDIS + tty (DM) + tty (NMEA) + tty (AT) + adb
T: Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#= 8 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1e0e ProdID=907b Rev= 5.15 S: Manufacturer=SIMCOM S: Product=SDXBAAGHA-IDP _SN:D744C4C5 S: SerialNumber=0123456789ABCDEF
C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
A: FirstIf#= 0 IfCount= 2 Cls=ef(misc ) Sub=04 Prot=01
I:* If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=rndis_host
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option E: Ad=86(I) Atr=03(Int.) MxPS= 10 Ivl=32ms E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none) E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
--- drivers/usb/serial/option.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/usb/serial/option.c +6 -0
@@ -2114,6 +2114,12 @@ static const struct usb_device_id option { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9003, 0xff) }, /* Simcom SIM7500/SIM7600 MBIM mode */ { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9011, 0xff), /* Simcom SIM7500/SIM7600 RNDIS mode */ .driver_info = RSVD(7) }, + { USB_DEVICE(0x1e0e, 0x9071), /* Simcom SIM8230 RMNET mode */ + .driver_info = RSVD(3) | RSVD(4) }, + { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9078, 0xff), /* Simcom SIM8230 ECM mode */ + .driver_info = RSVD(5) }, + { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x907b, 0xff), /* Simcom SIM8230 RNDIS mode */ + .driver_info = RSVD(5) }, { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9205, 0xff) }, /* Simcom SIM7070/SIM7080/SIM7090 AT+ECM mode */ { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9206, 0xff) }, /* Simcom SIM7070/SIM7080/SIM7090 AT-only mode */ { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200),
Greg Kroah-Hartman
maintainerPATCH 6/41 Bluetooth: btusb: Add USB ID 2001:332a for D-Link AX9U rev. A1
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zenm Chen <[email protected]>
commit 34ecb8760190606472f71ebf4ca2817928ce5d40 upstream.
Add USB ID 2001:332a for D-Link AX9U rev. A1 which is based on a Realtek RTL8851BU chip.
The information in /sys/kernel/debug/usb/devices about the Bluetooth device is listed as the below:
T: Bus=03 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 2 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=2001 ProdID=332a Rev= 0.00 S: Manufacturer=Realtek S: Product=802.11ax WLAN Adapter S: SerialNumber=00e04c000001 C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=500mA A: FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=01 I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms I: If#= 1 Alt= 6 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb E: Ad=03(O) Atr=01(Isoc) MxPS= 63 Ivl=1ms E: Ad=83(I) Atr=01(Isoc) MxPS= 63 Ivl=1ms I:* If#= 2 Alt= 0 #EPs= 8 Cls=ff(vend.) Sub=ff Prot=ff Driver=rtw89_8851bu_git E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=09(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=0a(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=0b(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=0c(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
--- drivers/bluetooth/btusb.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/bluetooth/btusb.c +2 -0
@@ -520,6 +520,8 @@ static const struct usb_device_id quirks/* Realtek 8851BU Bluetooth devices */ { USB_DEVICE(0x3625, 0x010b), .driver_info = BTUSB_REALTEK | BTUSB_WIDEBAND_SPEECH }, + { USB_DEVICE(0x2001, 0x332a), .driver_info = BTUSB_REALTEK | + BTUSB_WIDEBAND_SPEECH }, /* Realtek 8852AE Bluetooth devices */ { USB_DEVICE(0x0bda, 0x2852), .driver_info = BTUSB_REALTEK |
Greg Kroah-Hartman
maintainerPATCH 7/41 wifi: rtlwifi: rtl8192cu: Dont claim USB ID 07b8:8188
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bitterblue Smith <[email protected]>
commit e798f2ac6040f46a04795d7de977341fa9aeabae upstream.
This ID appears to be RTL8188SU, not RTL8188CU. This is the wrong driver for RTL8188SU. The r8712u driver from staging used to handle this ID.
--- drivers/net/wireless/realtek/rtlwifi/rtl8192cu/sw.c | 1 - 1 file changed, 1 deletion(-)
drivers/net/wireless/realtek/rtlwifi/rtl8192cu/sw.c +0 -1
@@ -291,7 +291,6 @@ static const struct usb_device_id rtl819 {RTL_USB_DEVICE(0x050d, 0x1102, rtl92cu_hal_cfg)}, /*Belkin - Edimax*/ {RTL_USB_DEVICE(0x050d, 0x11f2, rtl92cu_hal_cfg)}, /*Belkin - ISY*/ {RTL_USB_DEVICE(0x06f8, 0xe033, rtl92cu_hal_cfg)}, /*Hercules - Edimax*/ - {RTL_USB_DEVICE(0x07b8, 0x8188, rtl92cu_hal_cfg)}, /*Abocom - Abocom*/ {RTL_USB_DEVICE(0x07b8, 0x8189, rtl92cu_hal_cfg)}, /*Funai - Abocom*/ {RTL_USB_DEVICE(0x0846, 0x9041, rtl92cu_hal_cfg)}, /*NetGear WNA1000M*/ {RTL_USB_DEVICE(0x0846, 0x9043, rtl92cu_hal_cfg)}, /*NG WNA1000Mv2*/
Greg Kroah-Hartman
maintainerPATCH 8/41 wifi: rtl8xxxu: Dont claim USB ID 07b8:8188
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bitterblue Smith <[email protected]>
commit ec0b44736b1d22b763ee94f1aee856f9e793f3fe upstream.
This ID appears to be RTL8188SU, not RTL8188CU. This is the wrong driver for RTL8188SU. The r8712u driver from staging used to handle this ID.
--- drivers/net/wireless/realtek/rtl8xxxu/core.c | 2 -- 1 file changed, 2 deletions(-)
drivers/net/wireless/realtek/rtl8xxxu/core.c +0 -2
@@ -8170,8 +8170,6 @@ static const struct usb_device_id dev_ta .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x06f8, 0xe033, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, -{USB_DEVICE_AND_INTERFACE_INFO(0x07b8, 0x8188, 0xff, 0xff, 0xff), - .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x07b8, 0x8189, 0xff, 0xff, 0xff), .driver_info = (unsigned long)&rtl8192cu_fops}, {USB_DEVICE_AND_INTERFACE_INFO(0x0846, 0x9041, 0xff, 0xff, 0xff),
Greg Kroah-Hartman
maintainerPATCH 9/41 rust: drm: fix `srctree/` links
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Miguel Ojeda <[email protected]>
commit c2783c7cfefd55b1a5be781679cbee5191c0fd87 upstream.
These srctree/ links pointed inside linux/, but they are directly under drm/.
Thus fix them.
This cleans a future warning that will check our srctree/ links.
--- rust/kernel/drm/device.rs | 2 +- rust/kernel/drm/driver.rs | 2 +- rust/kernel/drm/file.rs | 2 +- rust/kernel/drm/gem/mod.rs | 2 +- rust/kernel/drm/ioctl.rs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-)
rust/kernel/drm/device.rs +1 -1
@@ -2,7 +2,7 @@//! DRM device. //! -//! C header: [`include/linux/drm/drm_device.h`](srctree/include/linux/drm/drm_device.h) +//! C header: [`include/drm/drm_device.h`](srctree/include/drm/drm_device.h) use crate ::{ alloc::allocator::Kmalloc ,
rust/kernel/drm/driver.rs +1 -1
@@ -2,7 +2,7 @@//! DRM driver core. //! -//! C header: [`include/linux/drm/drm_drv.h`](srctree/include/linux/drm/drm_drv.h) +//! C header: [`include/drm/drm_drv.h`](srctree/include/drm/drm_drv.h) use crate ::{ bindings, device,
rust/kernel/drm/file.rs +1 -1
@@ -2,7 +2,7 @@//! DRM File objects. //! -//! C header: [`include/linux/drm/drm_file.h`](srctree/include/linux/drm/drm_file.h) +//! C header: [`include/drm/drm_file.h`](srctree/include/drm/drm_file.h) use crate ::{bindings, drm, error::Result , prelude::*, types::Opaque };use core::marker::PhantomData ;
rust/kernel/drm/gem/mod.rs +1 -1
@@ -2,7 +2,7 @@//! DRM GEM API //! -//! C header: [`include/linux/drm/drm_gem.h`](srctree/include/linux/drm/drm_gem.h) +//! C header: [`include/drm/drm_gem.h`](srctree/include/drm/drm_gem.h) use crate ::{ alloc::flags::*,
rust/kernel/drm/ioctl.rs +1 -1
@@ -2,7 +2,7 @@//! DRM IOCTL definitions. //! -//! C header: [`include/linux/drm/drm_ioctl.h`](srctree/include/linux/drm/drm_ioctl.h) +//! C header: [`include/drm/drm_ioctl.h`](srctree/include/drm/drm_ioctl.h) use crate ::ioctl;
Greg Kroah-Hartman
maintainerPATCH 10/41 rust: block: fix `srctree/` links
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Miguel Ojeda <[email protected]>
commit 208d7f788e84e80992d7b1c82ff17b620eb1371e upstream.
This srctree/ link pointed to a file with an underscore, but the header used a dash instead.
Thus fix it.
This cleans a future warning that will check our srctree/ links.
--- rust/kernel/block/mq/gen_disk.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
rust/kernel/block/mq/gen_disk.rs +1 -1
@@ -3,7 +3,7 @@//! Generic disk abstraction. //! //! C header: [`include/linux/blkdev.h`](srctree/include/linux/blkdev.h) -//! C header: [`include/linux/blk_mq.h`](srctree/include/linux/blk_mq.h) +//! C header: [`include/linux/blk-mq.h`](srctree/include/linux/blk-mq.h) use crate ::block::mq::{raw_writer::RawWriter ,Operations ,TagSet };use crate ::{bindings, error::from_err_ptr, error::Result , sync::Arc };
Greg Kroah-Hartman
maintainerPATCH 11/41 rust: pci: fix incorrect platform reference in PCI driver probe doc comment
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rahul Rameshbabu <[email protected]>
commit 855318e7c0c4a3e3014c0469dd5bc93a1c0df30c upstream.
Substitute 'platform' with 'pci'.
--- rust/kernel/pci.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
rust/kernel/pci.rs +2 -2
@@ -238,8 +238,8 @@ pub trait Driver: Send {/// PCI driver probe. /// -/// Called when a new platform device is added or discovered. -/// Implementers should attempt to initialize the device here. +/// Called when a new pci device is added or discovered. Implementers should +/// attempt to initialize the device here. fn probe (dev: &Device <device::Core >, id_info: &Self ::IdInfo ) ->Result <Pin <KBox <Self >>>; }
Greg Kroah-Hartman
maintainerPATCH 12/41 gpiolib: acpi: Ignore touchpad wakeup on GPD G1619-05
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Antheas Kapenekakis <[email protected]>
[ Upstream commit 3712ce9fa501617cdc4466d30ae3894d50887743 ]
Same issue as G1619-04 in commit 805c74eac8cb ("gpiolib: acpi: Ignore touchpad wakeup on GPD G1619-04"), Strix Point lineup uses 05.
--- drivers/gpio/gpiolib-acpi-quirks.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
drivers/gpio/gpiolib-acpi-quirks.c +12 -0
@@ -317,6 +317,18 @@ static const struct dmi_system_id gpiolib_acpi_quirks[] __initconst = { .ignore_wake = "PNP0C50:00@8", }, }, + { +/* +* Same as G1619-04. New model. +*/ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"GPD" ), + DMI_MATCH(DMI_PRODUCT_NAME, "G1619-05"), + }, + .driver_data = &(struct acpi_gpiolib_dmi_quirk ) { + .ignore_wake ="PNP0C50:00@8" , + }, + }, {/* * Spurious wakeups from GPIO 11
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 13/41 ASoC: rt712: avoid skipping the blind write
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shuming Fan <[email protected]>
[ Upstream commit f54d87dad7619c8026e95b848d6ef677b9f2b55f ]
Some devices might not use the DMIC function of the RT712VB. Therefore, this patch avoids skipping the blind write with RT712VB.
--- sound/soc/codecs/rt712-sdca.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
sound/soc/codecs/rt712-sdca.c +2 -4
@@ -1891,11 +1891,9 @@ int rt712_sdca_io_init(struct device *dev, struct sdw_slave *slave)rt712_sdca_va_io_init (rt712); }else { -if (!rt712->dmic_function_found) { -dev_err (&slave->dev,"%s RT712 VB detected but no SMART_MIC function exposed in ACPI\n" , +if (!rt712->dmic_function_found) +dev_warn (&slave->dev,"%s RT712 VB detected but no SMART_MIC function exposed in ACPI\n" , __func__); - goto suspend; - }/* multilanes and DMIC are supported by rt712vb */ prop->lane_control_support = true;
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 14/41 ASoC: amd: acp: Adjust pdm gain value
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Venkata Prasad Potturu <[email protected]>
[ Upstream commit f1d0260362d72f9f454dc1f9db2eeb80cb801f28 ]
Set pdm gain value by setting PDM_MISC_CTRL_MASK value. To avoid low pdm gain value.
--- sound/soc/amd/acp/amd.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
sound/soc/amd/acp/amd.h +1 -1
@@ -130,7 +130,7 @@#define PDM_DMA_INTR_MASK 0x10000#define PDM_DEC_64 0x2#define PDM_CLK_FREQ_MASK 0x07 -#define PDM_MISC_CTRL_MASK 0x10 +#define PDM_MISC_CTRL_MASK 0x18#define PDM_ENABLE 0x01#define PDM_DISABLE 0x00#define DMA_EN_MASK 0x02
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 15/41 dm-integrity: limit MAX_TAG_SIZE to 255
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mikulas Patocka <[email protected]>
[ Upstream commit 77b8e6fbf9848d651f5cb7508f18ad0971f3ffdb ]
MAX_TAG_SIZE was 0x1a8 and it may be truncated in the "bi->metadata_size = ic->tag_size" assignment. We need to limit it to 255.
--- drivers/md/dm-integrity.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/md/dm-integrity.c +1 -1
@@ -133,7 +133,7 @@ struct journal_sector {commit_id_t commit_id; }; -#define MAX_TAG_SIZE (JOURNAL_SECTOR_DATA - JOURNAL_MAC_PER_SECTOR - offsetof(struct journal_entry, last_bytes[MAX_SECTORS_PER_BLOCK])) +#define MAX_TAG_SIZE 255#define METADATA_PADDING_SECTORS 8
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 16/41 platform/x86/amd/pmc: Add MECHREVO Yilong15Pro to spurious_8042 list
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: aprilgrimoire <[email protected]>
[ Upstream commit 8822e8be86d40410ddd2ac8ff44f3050c9ecf9c6 ]
The firmware of Mechrevo Yilong15Pro emits a spurious keyboard interrupt on events including closing the lid. When a user closes the lid on an already suspended system this causes the system to wake up.
Add Mechrevo Yilong15Pro Series (GM5HG7A) to the list of quirk spurious_8042 to work around this issue.
--- drivers/platform/x86/amd/pmc/pmc-quirks.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/platform/x86/amd/pmc/pmc-quirks.c +8 -0
@@ -239,6 +239,14 @@ static const struct dmi_system_id fwbug_list[] = { DMI_MATCH(DMI_BOARD_NAME, "WUJIE14-GX4HRXL"), } }, + { + .ident = "MECHREVO Yilong15Pro Series GM5HG7A", + .driver_data = &quirk_spurious_8042, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "MECHREVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "Yilong15Pro Series GM5HG7A"), + } + },/* https://bugzilla.kernel.org/show_bug.cgi?id=220116 */ { .ident = "PCSpecialist Lafite Pro V 14M",
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 17/41 platform/x86: oxpec: Add support for OneXPlayer X1Pro EVA-02
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Antheas Kapenekakis <[email protected]>
[ Upstream commit fba9d5448bd45b0ff7199c47023e9308ea4f1730 ]
It is a special edition of X1Pro with a different color.
--- drivers/platform/x86/oxpec.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/platform/x86/oxpec.c +7 -0
@@ -306,6 +306,13 @@ static const struct dmi_system_id dmi_table[] = { }, .driver_data = (void *)oxp_x1, }, + { + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ONE-NETBOOK"), + DMI_EXACT_MATCH(DMI_BOARD_NAME, "ONEXPLAYER X1Pro EVA-02"), + }, + .driver_data = (void *)oxp_x1, + }, {}, };
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 18/41 perf subcmd: avoid crash in exclude_cmds when excludes is empty
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: hupu <[email protected]>
[ Upstream commit a5edf3550f4260504b7e0ab3d40d13ffe924b773 ]
When cross-compiling the perf tool for ARM64, perf help may crash with the following assertion failure:
help.c:122: exclude_cmds: Assertion `cmds->names[ci] == NULL' failed.
This happens when the perf binary is not named exactly "perf" or when multiple "perf-*" binaries exist in the same directory. In such cases, the excludes command list can be empty, which leads to the final assertion in exclude_cmds() being triggered.
Add a simple guard at the beginning of exclude_cmds() to return early if excludes->cnt is zero, preventing the crash.
--- tools/lib/subcmd/help.c | 3 +++ 1 file changed, 3 insertions(+)
tools/lib/subcmd/help.c +3 -0
@@ -75,6 +75,9 @@ void exclude_cmds(struct cmdnames *cmds, struct cmdnames *excludes)size_t ci, cj, ei;int cmp; +if (!excludes->cnt) +return ; + ci = cj = ei =0 ;while (ci < cmds->cnt && ei < excludes->cnt) { cmp =strcmp (cmds->names[ci]->name, excludes->names[ei]->name);
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 19/41 drm/amdgpu/gfx11: Add Cleaner Shader Support for GFX11.0.1/11.0.4 GPUs
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Srinivasan Shanmugam <[email protected]>
[ Upstream commit c1b6b8c7706354b73196649c46b5e6d4d61c2f5c ]
Enable the cleaner shader for additional GFX11.0.1/11.0.4 series GPUs to ensure data isolation among GPU tasks. The cleaner shader is tasked with clearing the Local Data Store (LDS), Vector General Purpose Registers (VGPRs), and Scalar General Purpose Registers (SGPRs), which helps avoid data leakage and guarantees the accuracy of computational results.
This update extends cleaner shader support to GFX11.0.1/11.0.4 GPUs, previously available for GFX11.0.3. It enhances security by clearing GPU memory between processes and maintains a consistent GPU state across KGD and KFD workloads.
--- drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +15 -0
@@ -1654,6 +1654,21 @@ static int gfx_v11_0_sw_init(struct amdgpu_ip_block *ip_block) } }break ; +case IP_VERSION (11 ,0 ,1 ): +case IP_VERSION (11 ,0 ,4 ): + adev->gfx.cleaner_shader_ptr = gfx_11_0_3_cleaner_shader_hex; + adev->gfx.cleaner_shader_size =sizeof (gfx_11_0_3_cleaner_shader_hex); +if (adev->gfx.pfp_fw_version >=102 && + adev->gfx.mec_fw_version >=66 && + adev->mes.fw_version[0 ] >=128 ) { + adev->gfx.enable_cleaner_shader = true; + r =amdgpu_gfx_cleaner_shader_sw_init (adev, adev->gfx.cleaner_shader_size); +if (r) { + adev->gfx.enable_cleaner_shader = false; +dev_err (adev->dev,"Failed to initialize cleaner shader\n" ); + } + } +break ;case IP_VERSION (11 ,5 ,0 ):case IP_VERSION (11 ,5 ,1 ): adev->gfx.cleaner_shader_ptr = gfx_11_0_3_cleaner_shader_hex;
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 20/41 platform/x86/amd/pmf: Support new ACPI ID AMDI0108
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shyam Sundar S K <[email protected]>
[ Upstream commit 1b09d08866277677d11726116f5e786d5ba00173 ]
Include the ACPI ID AMDI0108, which is used on upcoming AMD platforms, in the PMF driver's list of supported devices.
--- drivers/platform/x86/amd/pmf/core.c | 1 + 1 file changed, 1 insertion(+)
drivers/platform/x86/amd/pmf/core.c +1 -0
@@ -403,6 +403,7 @@ static const struct acpi_device_id amd_pmf_acpi_ids[] = { {"AMDI0103", 0}, {"AMDI0105", 0}, {"AMDI0107", 0}, + {"AMDI0108", 0}, { } };MODULE_DEVICE_TABLE (acpi, amd_pmf_acpi_ids);
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 21/41 ASoC: rt5682s: Adjust SAR ADC button mode to fix noise issue
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jack Yu <[email protected]>
[ Upstream commit 1dd28fd86c3fa4e395031dd6f2ba920242107010 ]
Adjust register settings for SAR adc button detection mode to fix noise issue in headset.
--- sound/soc/codecs/rt5682s.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-)
sound/soc/codecs/rt5682s.c +9 -8
@@ -653,14 +653,15 @@ static void rt5682s_sar_power_mode(struct snd_soc_component *component, int modeswitch (mode) {case SAR_PWR_SAVING :snd_soc_component_update_bits (component,RT5682S_CBJ_CTRL_3 , -RT5682S_CBJ_IN_BUF_MASK ,RT5682S_CBJ_IN_BUF_DIS ); +RT5682S_CBJ_IN_BUF_MASK ,RT5682S_CBJ_IN_BUF_EN );snd_soc_component_update_bits (component,RT5682S_CBJ_CTRL_1 , -RT5682S_MB1_PATH_MASK |RT5682S_MB2_PATH_MASK , -RT5682S_CTRL_MB1_REG |RT5682S_CTRL_MB2_REG ); +RT5682S_MB1_PATH_MASK |RT5682S_MB2_PATH_MASK | +RT5682S_VREF_POW_MASK ,RT5682S_CTRL_MB1_FSM | +RT5682S_CTRL_MB2_FSM |RT5682S_VREF_POW_FSM );snd_soc_component_update_bits (component,RT5682S_SAR_IL_CMD_1 ,RT5682S_SAR_BUTDET_MASK |RT5682S_SAR_BUTDET_POW_MASK |RT5682S_SAR_SEL_MB1_2_CTL_MASK ,RT5682S_SAR_BUTDET_DIS | -RT5682S_SAR_BUTDET_POW_SAV |RT5682S_SAR_SEL_MB1_2_MANU ); +RT5682S_SAR_BUTDET_POW_NORM |RT5682S_SAR_SEL_MB1_2_MANU );usleep_range (5000 ,5500 );snd_soc_component_update_bits (component,RT5682S_SAR_IL_CMD_1 ,RT5682S_SAR_BUTDET_MASK ,RT5682S_SAR_BUTDET_EN );
@@ -688,7 +689,7 @@ static void rt5682s_sar_power_mode(struct snd_soc_component *component, int modesnd_soc_component_update_bits (component,RT5682S_SAR_IL_CMD_1 ,RT5682S_SAR_BUTDET_MASK |RT5682S_SAR_BUTDET_POW_MASK |RT5682S_SAR_SEL_MB1_2_CTL_MASK ,RT5682S_SAR_BUTDET_DIS | -RT5682S_SAR_BUTDET_POW_SAV |RT5682S_SAR_SEL_MB1_2_MANU ); +RT5682S_SAR_BUTDET_POW_NORM |RT5682S_SAR_SEL_MB1_2_MANU );break ;default :dev_err (component->dev,"Invalid SAR Power mode: %d\n" , mode);
@@ -725,7 +726,7 @@ static void rt5682s_disable_push_button_irq(struct snd_soc_component *component)snd_soc_component_update_bits (component,RT5682S_SAR_IL_CMD_1 ,RT5682S_SAR_BUTDET_MASK |RT5682S_SAR_BUTDET_POW_MASK |RT5682S_SAR_SEL_MB1_2_CTL_MASK ,RT5682S_SAR_BUTDET_DIS | -RT5682S_SAR_BUTDET_POW_SAV |RT5682S_SAR_SEL_MB1_2_MANU ); +RT5682S_SAR_BUTDET_POW_NORM |RT5682S_SAR_SEL_MB1_2_MANU ); }/**
@@ -786,7 +787,7 @@ static int rt5682s_headset_detect(struct snd_soc_component *component, int jack_ jack_type =SND_JACK_HEADSET ;snd_soc_component_write (component,RT5682S_SAR_IL_CMD_3 ,0x024c );snd_soc_component_update_bits (component,RT5682S_CBJ_CTRL_1 , -RT5682S_FAST_OFF_MASK ,RT5682S_FAST_OFF_EN ); +RT5682S_FAST_OFF_MASK ,RT5682S_FAST_OFF_DIS );snd_soc_component_update_bits (component,RT5682S_SAR_IL_CMD_1 ,RT5682S_SAR_SEL_MB1_2_MASK , val <<RT5682S_SAR_SEL_MB1_2_SFT );rt5682s_enable_push_button_irq (component);
@@ -966,7 +967,7 @@ static int rt5682s_set_jack_detect(struct snd_soc_component *component,RT5682S_EMB_JD_MASK |RT5682S_DET_TYPE |RT5682S_POL_FAST_OFF_MASK |RT5682S_MIC_CAP_MASK ,RT5682S_EMB_JD_EN |RT5682S_DET_TYPE | - RT5682S_POL_FAST_OFF_HIGH | RT5682S_MIC_CAP_HS); + RT5682S_POL_FAST_OFF_LOW | RT5682S_MIC_CAP_HS);regmap_update_bits (rt5682s->regmap,RT5682S_SAR_IL_CMD_1 ,RT5682S_SAR_POW_MASK ,RT5682S_SAR_POW_EN ); regmap_update_bits(rt5682s->regmap, RT5682S_GPIO_CTRL_1,
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 22/41 btrfs: ref-verify: handle damaged extent root tree
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Sterba <[email protected]>
[ Upstream commit ed4e6b5d644c4dd2bc2872ffec036b7da0ec2e27 ]
Syzbot hits a problem with enabled ref-verify, ignorebadroots and a fuzzed/damaged extent tree. There's no fallback option like in other places that can deal with it so disable the whole ref-verify as it is just a debugging feature.
--- fs/btrfs/ref-verify.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
fs/btrfs/ref-verify.c +8 -1
@@ -998,11 +998,18 @@ int btrfs_build_ref_tree(struct btrfs_fs_info *fs_info)if (!btrfs_test_opt (fs_info,REF_VERIFY ))return 0 ; + extent_root =btrfs_extent_root (fs_info,0 ); +/* If the extent tree is damaged we cannot ignore it (IGNOREBADROOTS). */ +if (IS_ERR (extent_root)) { +btrfs_warn (fs_info,"ref-verify: extent tree not available, disabling" ); +btrfs_clear_opt (fs_info->mount_opt,REF_VERIFY ); +return 0 ; + } + path =btrfs_alloc_path ();if (!path)return -ENOMEM ; - extent_root =btrfs_extent_root (fs_info,0 ); eb =btrfs_read_lock_root_node (extent_root); level =btrfs_header_level (eb); path->nodes[level] = eb;
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 23/41 netfs: Prevent duplicate unlocking
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lizhi Xu <[email protected]>
[ Upstream commit 66d938e89e940e512f4c3deac938ecef399c13f9 ]
The filio lock has been released here, so there is no need to jump to error_folio_unlock to release it again.
--- fs/netfs/buffered_write.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/netfs/buffered_write.c +1 -1
@@ -347,7 +347,7 @@ ssize_t netfs_perform_write(struct kiocb *iocb, struct iov_iter *iter,folio_put (folio); ret =filemap_write_and_wait_range (mapping, fpos, fpos + flen -1 );if (ret <0 ) - goto error_folio_unlock; + goto out;continue ; copied:
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 24/41 iommufd: WARN if an object is aborted with an elevated refcount
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jason Gunthorpe <[email protected]>
[ Upstream commit 53d0584eeb2c85a46c83656246d61a89558d74b3 ]
If something holds a refcount then it is at risk of UAFing. For abort paths we expect the caller to never share the object with a parallel thread and to clean up any refcounts it obtained on its own.
Add the missing dec inside iommufd_hwpt_paging_alloc() during error unwind by making iommufd_hw_pagetable_attach/detach() proper pairs.
--- drivers/iommu/iommufd/device.c | 3 ++- drivers/iommu/iommufd/iommufd_private.h | 3 +-- drivers/iommu/iommufd/main.c | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-)
drivers/iommu/iommufd/device.c +2 -1
@@ -661,6 +661,8 @@ iommufd_hw_pagetable_detach(struct iommufd_device *idev, ioasid_t pasid)iopt_remove_reserved_iova (&hwpt_paging->ioas->iopt, idev->dev);mutex_unlock (&igroup->lock); +iommufd_hw_pagetable_put (idev->ictx, hwpt); +/* Caller must destroy hwpt */ return hwpt; }
@@ -1007,7 +1009,6 @@ void iommufd_device_detach(struct iommufd_device *idev, ioasid_t pasid) hwpt =iommufd_hw_pagetable_detach (idev, pasid);if (!hwpt)return ; -iommufd_hw_pagetable_put (idev->ictx, hwpt);refcount_dec (&idev->obj.users); }EXPORT_SYMBOL_NS_GPL (iommufd_device_detach,"IOMMUFD" );
drivers/iommu/iommufd/iommufd_private.h +1 -2
@@ -390,9 +390,8 @@ static inline void iommufd_hw_pagetable_put(struct iommufd_ctx *ictx,if (hwpt->obj.type ==IOMMUFD_OBJ_HWPT_PAGING ) {struct iommufd_hwpt_paging *hwpt_paging =to_hwpt_paging (hwpt); -lockdep_assert_not_held (&hwpt_paging->ioas->mutex); -if (hwpt_paging->auto_domain) { +lockdep_assert_not_held (&hwpt_paging->ioas->mutex);iommufd_object_put_and_try_destroy (ictx, &hwpt->obj);return ; }
drivers/iommu/iommufd/main.c +4 -0
@@ -62,6 +62,10 @@ void iommufd_object_abort(struct iommufd_ctx *ictx, struct iommufd_object *obj) old =xas_store (&xas,NULL );xa_unlock (&ictx->objects);WARN_ON (old !=XA_ZERO_ENTRY ); + +if (WARN_ON (!refcount_dec_and_test (&obj->users))) +return ; +kfree (obj); }
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 25/41 can: hi311x: fix null pointer dereference when resuming from sleep before interface was enabled
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen Yufeng <[email protected]>
[ Upstream commit 6b696808472197b77b888f50bc789a3bae077743 ]
This issue is similar to the vulnerability in the mcp251x driver, which was fixed in commit 03c427147b2d ("can: mcp251x: fix resume from sleep before interface was brought up").
In the hi311x driver, when the device resumes from sleep, the driver schedules priv->restart_work. However, if the network interface was not previously enabled, the priv->wq (workqueue) is not allocated and initialized, leading to a null pointer dereference.
To fix this, we move the allocation and initialization of the workqueue from the hi3110_open function to the hi3110_can_probe function. This ensures that the workqueue is properly initialized before it is used during device resume. And added logic to destroy the workqueue in the error handling paths of hi3110_can_probe and in the hi3110_can_remove function to prevent resource leaks.
--- drivers/net/can/spi/hi311x.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-)
drivers/net/can/spi/hi311x.c +17 -16
@@ -545,8 +545,6 @@ static int hi3110_stop(struct net_device *net) priv->force_quit =1 ;free_irq (spi->irq, priv); -destroy_workqueue (priv->wq); - priv->wq =NULL ;mutex_lock (&priv->hi3110_lock);
@@ -770,34 +768,23 @@ static int hi3110_open(struct net_device *net) goto out_close; } - priv->wq =alloc_workqueue ("hi3110_wq" ,WQ_FREEZABLE |WQ_MEM_RECLAIM , -0 ); -if (!priv->wq) { - ret = -ENOMEM ; - goto out_free_irq; - } -INIT_WORK (&priv->tx_work, hi3110_tx_work_handler); -INIT_WORK (&priv->restart_work, hi3110_restart_work_handler); - ret =hi3110_hw_reset (spi);if (ret) - goto out_free_wq; + goto out_free_irq; ret =hi3110_setup (net);if (ret) - goto out_free_wq; + goto out_free_irq; ret =hi3110_set_normal_mode (spi);if (ret) - goto out_free_wq; + goto out_free_irq;netif_wake_queue (net);mutex_unlock (&priv->hi3110_lock);return 0 ; - out_free_wq: -destroy_workqueue (priv->wq); out_free_irq:free_irq (spi->irq, priv);hi3110_hw_sleep (spi);
@@ -909,6 +896,15 @@ static int hi3110_can_probe(struct spi_device *spi)if (ret) goto out_clk; + priv->wq =alloc_workqueue ("hi3110_wq" ,WQ_FREEZABLE |WQ_MEM_RECLAIM , +0 ); +if (!priv->wq) { + ret = -ENOMEM ; + goto out_clk; + } +INIT_WORK (&priv->tx_work, hi3110_tx_work_handler); +INIT_WORK (&priv->restart_work, hi3110_restart_work_handler); + priv->spi = spi;mutex_init (&priv->hi3110_lock);
@@ -944,6 +940,8 @@ static int hi3110_can_probe(struct spi_device *spi)return 0 ; error_probe: +destroy_workqueue (priv->wq); + priv->wq =NULL ;hi3110_power_enable (priv->power,0 ); out_clk:
@@ -964,6 +962,9 @@ static void hi3110_can_remove(struct spi_device *spi)hi3110_power_enable (priv->power,0 ); +destroy_workqueue (priv->wq); + priv->wq =NULL ; +clk_disable_unprepare (priv->clk);free_candev (net);
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 26/41 can: rcar_canfd: Fix controller mode setting
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Duy Nguyen <[email protected]>
[ Upstream commit 5cff263606a10102a0ea19ff579eaa18fd5577ad ]
Driver configures register to choose controller mode before setting all channels to reset mode leading to failure. The patch corrects operation of mode setting.
--- drivers/net/can/rcar/rcar_canfd.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/net/can/rcar/rcar_canfd.c +4 -3
@@ -870,9 +870,6 @@ static int rcar_canfd_reset_controller(struct rcar_canfd_global *gpriv)/* Reset Global error flags */ rcar_canfd_write (gpriv->base,RCANFD_GERFL ,0x0 ); -/* Set the controller into appropriate mode */ -rcar_canfd_set_mode (gpriv); -/* Transition all Channels to reset mode */ for_each_set_bit (ch, &gpriv->channels_mask, gpriv->info->max_channels) { rcar_canfd_clear_bit(gpriv->base,
@@ -892,6 +889,10 @@ static int rcar_canfd_reset_controller(struct rcar_canfd_global *gpriv)return err; } } + +/* Set the controller into appropriate mode */ +rcar_canfd_set_mode (gpriv); +return 0 ; }
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 27/41 platform/x86/amd/pmc: Add Stellaris Slim Gen6 AMD to spurious 8042 quirks list
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoffer Sandberg <[email protected]>
[ Upstream commit 12a3dd4d2cd9232d4e4df3b9a5b3d745db559941 ]
Prevents instant wakeup ~1s after suspend
--- drivers/platform/x86/amd/pmc/pmc-quirks.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/platform/x86/amd/pmc/pmc-quirks.c +7 -0
@@ -256,6 +256,13 @@ static const struct dmi_system_id fwbug_list[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Lafite Pro V 14M"), } }, + { + .ident = "TUXEDO Stellaris Slim 15 AMD Gen6", + .driver_data = &quirk_spurious_8042, + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "GMxHGxx"), + } + }, { .ident = "TUXEDO InfinityBook Pro 14/15 AMD Gen10", .driver_data = &quirk_spurious_8042,
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 28/41 hid: fix I2C read buffer overflow in raw_event() for mcp2221
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arnaud Lecomte <[email protected]>
commit b56cc41a3ae7323aa3c6165f93c32e020538b6d2 upstream.
As reported by syzbot, mcp2221_raw_event lacked validation of incoming I2C read data sizes, risking buffer overflows in mcp->rxbuf during multi-part transfers. As highlighted in the DS20005565B spec, p44, we have:
"The number of read-back data bytes to follow in this packet:
from 0 to a maximum of 60 bytes of read-back bytes." This patch enforces we don't exceed this limit.
--- drivers/hid/hid-mcp2221.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/hid/hid-mcp2221.c +4 -0
@@ -816,6 +816,10 @@ static int mcp2221_raw_event(struct hid_ }if (data[2 ] ==MCP2221_I2C_READ_COMPL || data[2 ] ==MCP2221_I2C_READ_PARTIAL ) { +if (!mcp->rxbuf || mcp->rxbuf_idx <0 || data[3 ] >60 ) { + mcp->status = -EINVAL ; +break ; + } buf = mcp->rxbuf;memcpy (&buf[mcp->rxbuf_idx], &data[4 ], data[3 ]); mcp->rxbuf_idx = mcp->rxbuf_idx + data[3 ];
Greg Kroah-Hartman
maintainerPATCH 29/41 nvmem: layouts: fix automatic module loading
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michael Walle <[email protected]>
commit 810b790033ccc795d55cbef3927668fd01efdfdf upstream.
To support loading of a layout module automatically the MODALIAS variable in the uevent is needed. Add it.
--- drivers/nvmem/layouts.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)
drivers/nvmem/layouts.c +13 -0
@@ -45,11 +45,24 @@ static void nvmem_layout_bus_remove(strureturn drv->remove (layout); } +static int nvmem_layout_bus_uevent (const struct device *dev, +struct kobj_uevent_env *env) +{ +int ret; + + ret =of_device_uevent_modalias (dev, env); +if (ret !=ENODEV ) +return ret; + +return 0 ; +} +static const struct bus_type nvmem_layout_bus_type = { .name ="nvmem-layout" , .match = nvmem_layout_bus_match, .probe = nvmem_layout_bus_probe, .remove = nvmem_layout_bus_remove, + .uevent = nvmem_layout_bus_uevent, }; int __nvmem_layout_driver_register(struct nvmem_layout_driver *drv,
Greg Kroah-Hartman
maintainerPATCH 30/41 drivers/misc/amd-sbi/Kconfig: select REGMAP_I2C
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Max Kellermann <[email protected]>
commit 5f8f84e286f11af4c954c14a57daffc80a1c3510 upstream.
Without CONFIG_REGMAP, rmi-i2c.c fails to build because struct regmap_config is not defined:
drivers/misc/amd-sbi/rmi-i2c.c: In function ‘sbrmi_i2c_probe’:
drivers/misc/amd-sbi/rmi-i2c.c:57:16: error: variable ‘sbrmi_i2c_regmap_config’ has initializer but incomplete type
57 | struct regmap_config sbrmi_i2c_regmap_config = {
| ^~~~~~~~~~~~~Additionally, CONFIG_REGMAP_I2C is needed for devm_regmap_init_i2c():
ld: drivers/misc/amd-sbi/rmi-i2c.o: in function `sbrmi_i2c_probe':
drivers/misc/amd-sbi/rmi-i2c.c:69:(.text+0x1c0): undefined reference to `__devm_regmap_init_i2c'
--- drivers/misc/amd-sbi/Kconfig | 1 + 1 file changed, 1 insertion(+)
drivers/misc/amd-sbi/Kconfig +1 -0
@@ -2,6 +2,7 @@ config AMD_SBRMI_I2C tristate "AMD side band RMI support" depends on I2C + select REGMAP_I2C help Side band RMI over I2C support for AMD out of band management.
Signature · 1 line
2.51.0
Greg Kroah-Hartman
maintainerPATCH 31/41 binder: fix double-free in dbitmap
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Carlos Llamas <[email protected]>
commit 3ebcd3460cad351f198c39c6edb4af519a0ed934 upstream.
A process might fail to allocate a new bitmap when trying to expand its proc->dmap. In that case, dbitmap_grow() fails and frees the old bitmap via dbitmap_free(). However, the driver calls dbitmap_free() again when the same process terminates, leading to a double-free error:
==================================================================
BUG: KASAN: double-free in binder_proc_dec_tmpref+0x2e0/0x55c Free of addr ffff00000b7c1420 by task kworker/9:1/209 CPU: 9 UID: 0 PID: 209 Comm: kworker/9:1 Not tainted 6.17.0-rc6-dirty #5 PREEMPT Hardware name: linux,dummy-virt (DT) Workqueue: events binder_deferred_func Call trace: kfree+0x164/0x31c binder_proc_dec_tmpref+0x2e0/0x55c binder_deferred_func+0xc24/0x1120 process_one_work+0x520/0xba4 [...] Allocated by task 448: __kmalloc_noprof+0x178/0x3c0 bitmap_zalloc+0x24/0x30 binder_open+0x14c/0xc10 [...] Freed by task 449: kfree+0x184/0x31c binder_inc_ref_for_node+0xb44/0xe44 binder_transaction+0x29b4/0x7fbc binder_thread_write+0x1708/0x442c binder_ioctl+0x1b50/0x2900 [...] ==================================================================
Fix this issue by marking proc->map NULL in dbitmap_free().
--- drivers/android/dbitmap.h | 1 + 1 file changed, 1 insertion(+)
drivers/android/dbitmap.h +1 -0
@@ -37,6 +37,7 @@ static inline void dbitmap_free(struct d { dmap->nbits =0 ;kfree (dmap->map); + dmap->map =NULL ; }/* Returns the nbits that a dbitmap can shrink to, 0 if not possible. */
Greg Kroah-Hartman
maintainerPATCH 32/41 serial: stm32: allow selecting console when the driver is module
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Raphael Gallais-Pou <[email protected]>
commit cc4d900d0d6d8dd5c41832a93ff3cfa629a78f9a upstream.
Console can be enabled on the UART compile as module.
Change dependency to allow console mode when the driver is built as module.
--- drivers/tty/serial/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/tty/serial/Kconfig +1 -1
@@ -1405,7 +1405,7 @@ config SERIAL_STM32 config SERIAL_STM32_CONSOLE bool "Support for console on STM32" - depends on SERIAL_STM32=y + depends on SERIAL_STM32 select SERIAL_CORE_CONSOLE select SERIAL_EARLYCON
Greg Kroah-Hartman
maintainerPATCH 33/41 staging: axis-fifo: fix maximum TX packet length check
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ovidiu Panait <[email protected]>
commit 52ff2b840bc723f3be1f096f8017c78e0515858c upstream.
Since commit 2ca34b508774 ("staging: axis-fifo: Correct handling of tx_fifo_depth for size validation"), write() operations with packets larger than 'tx_fifo_depth - 4' words are no longer rejected with -EINVAL.
Fortunately, the packets are not actually getting transmitted to hardware, otherwise they would be raising a 'Transmit Packet Overrun Error' interrupt, which requires a reset of the TX circuit to recover from.
Instead, the request times out inside wait_event_interruptible_timeout() and always returns -EAGAIN, since the wake up condition can never be true for these packets. But still, they unnecessarily block other tasks from writing to the FIFO and the EAGAIN return code signals userspace to retry the write() call, even though it will always fail and time out.
According to the AXI4-Stream FIFO reference manual (PG080), the maximum valid packet length is 'tx_fifo_depth - 4' words, so attempting to send larger packets is invalid and should not be happening in the first place:
Quoted 2 lines
The maximum packet that can be transmitted is limited by the size of the FIFO, which is (C_TX_FIFO_DEPTH–4)*(data interface width/8) bytes.
Therefore, bring back the old behavior and outright reject packets larger than 'tx_fifo_depth - 4' with -EINVAL. Add a comment to explain why the check is necessary. The dev_err() message was removed to avoid cluttering the dmesg log if an invalid packet is received from userspace.
--- drivers/staging/axis-fifo/axis-fifo.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)
drivers/staging/axis-fifo/axis-fifo.c +10 -4
@@ -486,11 +486,17 @@ static ssize_t axis_fifo_write(struct fireturn -EINVAL ; } -if (words_to_write > fifo->tx_fifo_depth) { -dev_err (fifo->dt_device,"tried to write more words [%u] than slots in the fifo buffer [%u]\n" , - words_to_write, fifo->tx_fifo_depth); +/* +* In 'Store-and-Forward' mode, the maximum packet that can be +* transmitted is limited by the size of the FIFO, which is +* (C_TX_FIFO_DEPTH–4)*(data interface width/8) bytes. +* +* Do not attempt to send a packet larger than 'tx_fifo_depth - 4', +* otherwise a 'Transmit Packet Overrun Error' interrupt will be +* raised, which requires a reset of the TX circuit to recover. +*/ +if (words_to_write > (fifo->tx_fifo_depth -4 ))return -EINVAL ; - }if (fifo->write_flags &O_NONBLOCK ) {/*
Greg Kroah-Hartman
maintainerPATCH 34/41 staging: axis-fifo: fix TX handling on copy_from_user() failure
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ovidiu Panait <[email protected]>
commit 6d07bee10e4bdd043ec7152cbbb9deb27033c9e2 upstream.
If copy_from_user() fails, write() currently returns -EFAULT, but any partially written data leaves the TX FIFO in an inconsistent state. Subsequent write() calls then fail with "transmit length mismatch" errors.
Once partial data is written to the hardware FIFO, it cannot be removed without a TX reset. Commit c6e8d85fafa7 ("staging: axis-fifo: Remove hardware resets for user errors") removed a full FIFO reset for this case, which fixed a potential RX data loss, but introduced this TX issue.
Fix this by introducing a bounce buffer: copy the full packet from userspace first, and write to the hardware FIFO only if the copy was successful.
--- drivers/staging/axis-fifo/axis-fifo.c | 36 +++++++++------------------------- 1 file changed, 10 insertions(+), 26 deletions(-)
drivers/staging/axis-fifo/axis-fifo.c +10 -26
@@ -42,7 +42,6 @@#define DRIVER_NAME "axis_fifo"#define READ_BUF_SIZE 128U/* read buffer length in words */ -#define WRITE_BUF_SIZE 128U/* write buffer length in words */ /* ---------------------------- * IP register offsets
@@ -466,11 +465,8 @@ static ssize_t axis_fifo_write(struct fi {struct axis_fifo *fifo = (struct axis_fifo *)f->private_data;unsigned int words_to_write; -unsigned int copied; -unsigned int copy; -unsigned int i; +u32 *txbuf;int ret; -u32 tmp_buf[WRITE_BUF_SIZE ];if (len %sizeof (u32)) { dev_err(fifo->dt_device,
@@ -535,32 +531,20 @@ static ssize_t axis_fifo_write(struct fi } } -/* write data from an intermediate buffer into the fifo IP, refilling -* the buffer with userspace data as needed -*/ - copied =0 ; -while (words_to_write >0 ) { - copy =min (words_to_write,WRITE_BUF_SIZE ); - -if (copy_from_user (tmp_buf, buf + copied *sizeof (u32), - copy *sizeof (u32))) { - ret = -EFAULT ; - goto end_unlock; - } - -for (i =0 ; i < copy; i++) -iowrite32 (tmp_buf[i], fifo->base_addr + -XLLF_TDFD_OFFSET ); - - copied += copy; - words_to_write -= copy; + txbuf =vmemdup_user (buf, len); +if (IS_ERR (txbuf)) { + ret =PTR_ERR (txbuf); + goto end_unlock; } - ret = copied *sizeof (u32); +for (int i =0 ; i < words_to_write; ++i) +iowrite32 (txbuf[i], fifo->base_addr +XLLF_TDFD_OFFSET );/* write packet size to fifo */ -iowrite32 (ret, fifo->base_addr +XLLF_TLR_OFFSET ); +iowrite32 (len, fifo->base_addr +XLLF_TLR_OFFSET ); + ret = len; +kvfree (txbuf); end_unlock:mutex_unlock (&fifo->write_lock);
Greg Kroah-Hartman
maintainerPATCH 35/41 staging: axis-fifo: flush RX FIFO on read errors
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ovidiu Panait <[email protected]>
commit 82a051e2553b9e297cba82a975d9c538b882c79e upstream.
Flush stale data from the RX FIFO in case of errors, to avoid reading old data when new packets arrive.
Commit c6e8d85fafa7 ("staging: axis-fifo: Remove hardware resets for user errors") removed full FIFO resets from the read error paths, which fixed potential TX data losses, but introduced this RX issue.
--- drivers/staging/axis-fifo/axis-fifo.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-)
drivers/staging/axis-fifo/axis-fifo.c +11 -7
@@ -391,6 +391,7 @@ static ssize_t axis_fifo_read(struct fil } bytes_available =ioread32 (fifo->base_addr +XLLF_RLR_OFFSET ); + words_available = bytes_available /sizeof (u32);if (!bytes_available) {dev_err (fifo->dt_device,"received a packet of length 0\n" ); ret = -EIO ;
@@ -401,7 +402,7 @@ static ssize_t axis_fifo_read(struct fildev_err (fifo->dt_device,"user read buffer too small (available bytes=%zu user buffer bytes=%zu)\n" , bytes_available, len); ret = -EINVAL ; - goto end_unlock; + goto err_flush_rx; }if (bytes_available %sizeof (u32)) {
@@ -410,11 +411,9 @@ static ssize_t axis_fifo_read(struct fil*/ dev_err (fifo->dt_device,"received a packet that isn't word-aligned\n" ); ret = -EIO ; - goto end_unlock; + goto err_flush_rx; } - words_available = bytes_available /sizeof (u32); -/* read data into an intermediate buffer, copying the contents * to userspace when the buffer is full */
@@ -426,18 +425,23 @@ static ssize_t axis_fifo_read(struct fil tmp_buf[i] =ioread32 (fifo->base_addr +XLLF_RDFD_OFFSET ); } + words_available -= copy;if (copy_to_user (buf + copied *sizeof (u32), tmp_buf, copy *sizeof (u32))) { ret = -EFAULT ; - goto end_unlock; + goto err_flush_rx; } copied += copy; - words_available -= copy; } +mutex_unlock (&fifo->read_lock); + +return bytes_available; - ret = bytes_available; +err_flush_rx: +while (words_available--) +ioread32 (fifo->base_addr +XLLF_RDFD_OFFSET ); end_unlock:mutex_unlock (&fifo->read_lock);
Greg Kroah-Hartman
maintainerPATCH 36/41 driver core: faux: Set power.no_pm for faux devices
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafael J. Wysocki <[email protected]>
commit 1ad926459970444af1140f9b393f416536e1a828 upstream.
Since faux devices are not supposed to be involved in any kind of power management, set the no_pm flag for all of them.
--- drivers/base/faux.c | 1 + 1 file changed, 1 insertion(+)
drivers/base/faux.c +1 -0
@@ -155,6 +155,7 @@ struct faux_device *faux_device_create_w dev->parent = &faux_bus_root; dev->bus = &faux_bus_type;dev_set_name (dev,"%s" , name); +device_set_pm_not_required (dev); ret =device_add (dev);if (ret) {
Greg Kroah-Hartman
maintainerPATCH 37/41 driver core/PM: Set power.no_callbacks along with power.no_pm
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafael J. Wysocki <[email protected]>
commit c2ce2453413d429e302659abc5ace634e873f6f5 upstream.
Devices with power.no_pm set are not expected to need any power management at all, so modify device_set_pm_not_required() to set power.no_callbacks for them too in case runtime PM will be enabled for any of them (which in principle may be done for convenience if such a device participates in a dependency chain).
Since device_set_pm_not_required() must be called before device_add() or it would not have any effect, it can update power.no_callbacks without locking, unlike pm_runtime_no_callbacks() that can be called after registering the target device.
--- include/linux/device.h | 3 +++ 1 file changed, 3 insertions(+)
include/linux/device.h +3 -0
@@ -851,6 +851,9 @@ static inline bool device_pm_not_requirestatic inline void device_set_pm_not_required (struct device *dev) { dev->power.no_pm = true; +#ifdef CONFIG_PM + dev->power.no_callbacks = true; +#endif }static inline void dev_pm_syscore_device (struct device *dev,bool val)
Greg Kroah-Hartman
maintainerPATCH 38/41 crypto: rng - Ensure set_ent is always present
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Herbert Xu <[email protected]>
commit c0d36727bf39bb16ef0a67ed608e279535ebf0da upstream.
Ensure that set_ent is always set since only drbg provides it.
--- crypto/rng.c | 8 ++++++++ 1 file changed, 8 insertions(+)
crypto/rng.c +8 -0
@@ -168,6 +168,11 @@ out:EXPORT_SYMBOL_GPL (crypto_del_default_rng);#endif +static void rng_default_set_ent (struct crypto_rng *tfm,const u8 *data, +unsigned int len) +{ +} +int crypto_register_rng (struct rng_alg *alg) {struct crypto_alg *base = &alg->base;
@@ -179,6 +184,9 @@ int crypto_register_rng(struct rng_alg * base->cra_flags &= ~CRYPTO_ALG_TYPE_MASK ; base->cra_flags |=CRYPTO_ALG_TYPE_RNG ; +if (!alg->set_ent) + alg->set_ent = rng_default_set_ent; +return crypto_register_alg (base); }EXPORT_SYMBOL_GPL (crypto_register_rng);
Greg Kroah-Hartman
maintainerPATCH 39/41 net/9p: fix double req put in p9_fd_cancelled
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nalivayko Sergey <[email protected]>
commit 674b56aa57f9379854cb6798c3bbcef7e7b51ab7 upstream.
Syzkaller reports a KASAN issue as below:
general protection fault, probably for non-canonical address 0xfbd59c0000000021: 0000 [#1] PREEMPT SMP KASAN NOPTI KASAN: maybe wild-memory-access in range [0xdead000000000108-0xdead00000000010f] CPU: 0 PID: 5083 Comm: syz-executor.2 Not tainted 6.1.134-syzkaller-00037-g855bd1d7d838 #0 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014 RIP: 0010:__list_del include/linux/list.h:114 [inline] RIP: 0010:__list_del_entry include/linux/list.h:137 [inline] RIP: 0010:list_del include/linux/list.h:148 [inline] RIP: 0010:p9_fd_cancelled+0xe9/0x200 net/9p/trans_fd.c:734 Call Trace: <TASK> p9_client_flush+0x351/0x440 net/9p/client.c:614 p9_client_rpc+0xb6b/0xc70 net/9p/client.c:734 p9_client_version net/9p/client.c:920 [inline] p9_client_create+0xb51/0x1240 net/9p/client.c:1027 v9fs_session_init+0x1f0/0x18f0 fs/9p/v9fs.c:408 v9fs_mount+0xba/0xcb0 fs/9p/vfs_super.c:126 legacy_get_tree+0x108/0x220 fs/fs_context.c:632 vfs_get_tree+0x8e/0x300 fs/super.c:1573 do_new_mount fs/namespace.c:3056 [inline] path_mount+0x6a6/0x1e90 fs/namespace.c:3386 do_mount fs/namespace.c:3399 [inline] __do_sys_mount fs/namespace.c:3607 [inline] __se_sys_mount fs/namespace.c:3584 [inline] __x64_sys_mount+0x283/0x300 fs/namespace.c:3584 do_syscall_x64 arch/x86/entry/common.c:51 [inline] do_syscall_64+0x35/0x80 arch/x86/entry/common.c:81 entry_SYSCALL_64_after_hwframe+0x6e/0xd8
This happens because of a race condition between:
- The 9p client sending an invalid flush request and later cleaning it up;
- The 9p client in p9_read_work() canceled all pending requests.
Thread 1 Thread 2
...
p9_client_create()
...
p9_fd_create()
...
p9_conn_create()
...
// start Thread 2
INIT_WORK(&m->rq, p9_read_work);
p9_read_work()
...
p9_client_rpc()
...
...
p9_conn_cancel()
...
spin_lock(&m->req_lock);
...
p9_fd_cancelled()
...
...
spin_unlock(&m->req_lock);
// status rewrite
p9_client_cb(m->client, req, REQ_STATUS_ERROR)
// first remove
list_del(&req->req_list);
...
spin_lock(&m->req_lock)
...
// second remove
list_del(&req->req_list);
spin_unlock(&m->req_lock)...
Commit 74d6a5d56629 ("9p/trans_fd: Fix concurrency del of req_list in p9_fd_cancelled/p9_read_work") fixes a concurrency issue in the 9p filesystem client where the req_list could be deleted simultaneously by both p9_read_work and p9_fd_cancelled functions, but for the case where req->status equals REQ_STATUS_RCVD.
Update the check for req->status in p9_fd_cancelled to skip processing not just received requests, but anything that is not SENT, as whatever changed the state from SENT also removed the request from its list.
Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
Message-ID: <[email protected]>
--- net/9p/trans_fd.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
net/9p/trans_fd.c +4 -4
@@ -726,10 +726,10 @@ static int p9_fd_cancelled(struct p9_clip9_debug (P9_DEBUG_TRANS ,"client %p req %p\n" , client, req);spin_lock (&m->req_lock); -/* Ignore cancelled request if message has been received -* before lock. -*/ -if (req->status ==REQ_STATUS_RCVD ) { +/* Ignore cancelled request if status changed since the request was +* processed in p9_client_flush() +*/ +if (req->status !=REQ_STATUS_SENT ) {spin_unlock (&m->req_lock);return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 40/41 KVM: x86: Dont (re)check L1 intercepts when completing userspace I/O
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sean Christopherson <[email protected]>
commit e750f85391286a4c8100275516973324b621a269 upstream.
When completing emulation of instruction that generated a userspace exit for I/O, don't recheck L1 intercepts as KVM has already finished that phase of instruction execution, i.e. has already committed to allowing L2 to perform I/O. If L1 (or host userspace) modifies the I/O permission bitmaps during the exit to userspace, KVM will treat the access as being intercepted despite already having emulated the I/O access.
Pivot on EMULTYPE_NO_DECODE to detect that KVM is completing emulation. Of the three users of EMULTYPE_NO_DECODE, only complete_emulated_io() (the intended "recipient") can reach the code in question. gp_interception()'s use is mutually exclusive with is_guest_mode(), and complete_emulated_insn_gp() unconditionally pairs EMULTYPE_NO_DECODE with EMULTYPE_SKIP.
The bad behavior was detected by a syzkaller program that toggles port I/O interception during the userspace I/O exit, ultimately resulting in a WARN on vcpu->arch.pio.count being non-zero due to KVM no completing emulation of the I/O instruction.
WARNING: CPU: 23 PID: 1083 at arch/x86/kvm/x86.c:8039 emulator_pio_in_out+0x154/0x170 [kvm] Modules linked in: kvm_intel kvm irqbypass CPU: 23 UID: 1000 PID: 1083 Comm: repro Not tainted 6.16.0-rc5-c1610d2d66b1-next-vm #74 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:emulator_pio_in_out+0x154/0x170 [kvm] PKRU: 55555554 Call Trace: <TASK> kvm_fast_pio+0xd6/0x1d0 [kvm] vmx_handle_exit+0x149/0x610 [kvm_intel] kvm_arch_vcpu_ioctl_run+0xda8/0x1ac0 [kvm] kvm_vcpu_ioctl+0x244/0x8c0 [kvm] __x64_sys_ioctl+0x8a/0xd0 do_syscall_64+0x5d/0xc60 entry_SYSCALL_64_after_hwframe+0x4b/0x53 </TASK>
--- arch/x86/kvm/emulate.c | 9 ++++----- arch/x86/kvm/kvm_emulate.h | 3 +-- arch/x86/kvm/x86.c | 15 ++++++++------- 3 files changed, 13 insertions(+), 14 deletions(-)
arch/x86/kvm/emulate.c +4 -5
@@ -5107,12 +5107,11 @@ void init_decode_cache(struct x86_emulat ctxt->mem_read.end =0 ; } -int x86_emulate_insn (struct x86_emulate_ctxt *ctxt) +int x86_emulate_insn (struct x86_emulate_ctxt *ctxt,bool check_intercepts) {const struct x86_emulate_ops *ops = ctxt->ops;int rc =X86EMUL_CONTINUE ;int saved_dst_type = ctxt->dst.type; -bool is_guest_mode = ctxt->ops->is_guest_mode (ctxt); ctxt->mem_read.pos =0 ;
@@ -5160,7 +5159,7 @@ int x86_emulate_insn(struct x86_emulate_fetch_possible_mmx_operand (&ctxt->dst); } -if (unlikely (is_guest_mode) && ctxt->intercept) { +if (unlikely (check_intercepts) && ctxt->intercept) { rc =emulator_check_intercept (ctxt, ctxt->intercept,X86_ICPT_PRE_EXCEPT );if (rc !=X86EMUL_CONTINUE )
@@ -5189,7 +5188,7 @@ int x86_emulate_insn(struct x86_emulate_ goto done; } -if (unlikely (is_guest_mode) && (ctxt->d & Intercept)) { +if (unlikely (check_intercepts) && (ctxt->d & Intercept)) { rc =emulator_check_intercept (ctxt, ctxt->intercept,X86_ICPT_POST_EXCEPT );if (rc !=X86EMUL_CONTINUE )
@@ -5243,7 +5242,7 @@ int x86_emulate_insn(struct x86_emulate_ special_insn: -if (unlikely (is_guest_mode) && (ctxt->d & Intercept)) { +if (unlikely (check_intercepts) && (ctxt->d & Intercept)) { rc =emulator_check_intercept (ctxt, ctxt->intercept,X86_ICPT_POST_MEMACCESS );if (rc !=X86EMUL_CONTINUE )
arch/x86/kvm/kvm_emulate.h +1 -2
@@ -235,7 +235,6 @@ struct x86_emulate_ops {void (*set_nmi_mask)(struct x86_emulate_ctxt *ctxt,bool masked);bool (*is_smm)(struct x86_emulate_ctxt *ctxt); -bool (*is_guest_mode)(struct x86_emulate_ctxt *ctxt);int (*leave_smm)(struct x86_emulate_ctxt *ctxt);void (*triple_fault)(struct x86_emulate_ctxt *ctxt);int (*set_xcr)(struct x86_emulate_ctxt *ctxt,u32 index,u64 xcr);
@@ -521,7 +520,7 @@ bool x86_page_table_writing_insn(struct#define EMULATION_RESTART 1#define EMULATION_INTERCEPTED 2void init_decode_cache (struct x86_emulate_ctxt *ctxt); -int x86_emulate_insn (struct x86_emulate_ctxt *ctxt); +int x86_emulate_insn (struct x86_emulate_ctxt *ctxt,bool check_intercepts);int emulator_task_switch (struct x86_emulate_ctxt *ctxt,u16 tss_selector,int idt_index,int reason,bool has_error_code,u32 error_code);
arch/x86/kvm/x86.c +8 -7
@@ -8613,11 +8613,6 @@ static bool emulator_is_smm(struct x86_ereturn is_smm (emul_to_vcpu (ctxt)); } -static bool emulator_is_guest_mode (struct x86_emulate_ctxt *ctxt) -{ -return is_guest_mode (emul_to_vcpu (ctxt)); -} -#ifndef CONFIG_KVM_SMM static int emulator_leave_smm (struct x86_emulate_ctxt *ctxt) {
@@ -8701,7 +8696,6 @@ static const struct x86_emulate_ops emul .guest_cpuid_is_intel_compatible = emulator_guest_cpuid_is_intel_compatible, .set_nmi_mask = emulator_set_nmi_mask, .is_smm = emulator_is_smm, - .is_guest_mode = emulator_is_guest_mode, .leave_smm = emulator_leave_smm, .triple_fault = emulator_triple_fault, .set_xcr = emulator_set_xcr,
@@ -9286,7 +9280,14 @@ restart: ctxt->exception.address =0 ; } - r =x86_emulate_insn (ctxt); +/* +* Check L1's instruction intercepts when emulating instructions for +* L2, unless KVM is re-emulating a previously decoded instruction, +* e.g. to complete userspace I/O, in which case KVM has already +* checked the intercepts. +*/ + r =x86_emulate_insn (ctxt,is_guest_mode (vcpu) && + !(emulation_type &EMULTYPE_NO_DECODE ));if (r ==EMULATION_INTERCEPTED )return 1 ;
Greg Kroah-Hartman
maintainerPATCH 41/41 ring buffer: Propagate __rb_map_vma return value to caller
In reply to Greg Kroah-Hartman6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ankit Khushwaha <[email protected]>
commit de4cbd704731778a2dc833ce5a24b38e5d672c05 upstream.
The return value from __rb_map_vma(), which rejects writable or executable mappings (VM_WRITE, VM_EXEC, or !VM_MAYSHARE), was being ignored. As a result the caller of __rb_map_vma always returned 0 even when the mapping had actually failed, allowing it to proceed with an invalid VMA.
--- kernel/trace/ring_buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/trace/ring_buffer.c +1 -1
@@ -7180,7 +7180,7 @@ int ring_buffer_map(struct trace_bufferatomic_dec (&cpu_buffer->resize_disabled); } -return 0 ; +return err; }int ring_buffer_unmap (struct trace_buffer *buffer,int cpu)
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.16.12 release. There are 41 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 12 Oct 2025 13:13:18 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.16.12-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.16.y
and the diffstat can be found below.thanks,
greg k-h
All tests passing for Tegra ...
Test results for stable-v6.16:
10 builds: 10 pass, 0 fail
28 boots: 28 pass, 0 fail
109 tests: 109 pass, 0 failLinux version: 6.16.12-rc1-ge006d63d59f2
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra186-p3509-0000+p3636-0001, tegra194-p2972-0000,
tegra194-p3509-0000+p3668-0000, tegra20-ventana,
tegra210-p2371-2180, tegra210-p3450-0000,
tegra30-cardhu-a04Jon
Quoted 7 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.16.12 release. There are 41 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 12 Oct 2025 13:13:18 +0000. Anything received after that time might be too late.
Hi Greg
6.16.12-rc1 compiles on x86_64 (Xeon E5-1620 v2, Slackware64-15.0), and boots & runs on x86_64 (AMD Ryzen 5 7520U, Slackware64-current). No regressions observed.
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.16.12 release. There are 41 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 12 Oct 2025 13:13:18 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.16.12-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.16.y
and the diffstat can be found below.thanks,
greg k-h
Tested rc1 against the Fedora build system (aarch64, ppc64le, s390x, x86_64), and boot tested x86_64. No regressions noted.
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.16.12 release. There are 41 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 12 Oct 2025 13:13:18 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.16.12-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.16.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah
Hi!
Quoted 4 lines
This is the start of the stable review cycle for the 6.16.12 release. There are 41 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
CIP testing did not find any problems here:
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/tree/linux-6.16.y
6.6 passes our testing, too:
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/tree/linux-6.6.y
Best regards,
Pavel
Signature · 2 lines
In cooperation with DENX Software Engineering GmbH, HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.16.12 release. There are 41 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 12 Oct 2025 13:13:18 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.16.12-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.16.y
and the diffstat can be found below.thanks,
greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
## Build
* kernel: 6.16.12-rc1
* git: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
* git commit: e006d63d59f243154aba844a31f8ac8afd93484a
* git describe: v6.16.10-57-ge006d63d59f2
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.16.y/build/v6.16.10-57-ge006d63d59f2
## Test Regressions (compared to v6.16.10-15-g13cc90c947b1)
## Metric Regressions (compared to v6.16.10-15-g13cc90c947b1)
## Test Fixes (compared to v6.16.10-15-g13cc90c947b1)
## Metric Fixes (compared to v6.16.10-15-g13cc90c947b1)
## Test result summary
total: 166603, pass: 141637, fail: 5024, skip: 19942, xfail: 0
## Build Summary
* arc: 5 total, 5 passed, 0 failed
* arm: 139 total, 137 passed, 2 failed
* arm64: 57 total, 50 passed, 7 failed
* i386: 18 total, 18 passed, 0 failed
* mips: 34 total, 33 passed, 1 failed
* parisc: 4 total, 4 passed, 0 failed
* powerpc: 40 total, 39 passed, 1 failed
* riscv: 25 total, 23 passed, 2 failed
* s390: 22 total, 21 passed, 1 failed
* sh: 5 total, 5 passed, 0 failed
* sparc: 4 total, 3 passed, 1 failed
* x86_64: 49 total, 46 passed, 3 failed
## Test suites summary
* boot
* commands
* kselftest-arm64
* kselftest-breakpoints
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-efivarfs
* kselftest-exec
* kselftest-fpu
* kselftest-ftrace
* kselftest-futex
* kselftest-gpio
* kselftest-intel_pstate
* kselftest-ipc
* kselftest-kcmp
* kselftest-kvm
* kselftest-livepatch
* kselftest-membarrier
* kselftest-memfd
* kselftest-mincore
* kselftest-mm
* kselftest-mqueue
* kselftest-net
* kselftest-net-mptcp
* kselftest-openat2
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-rust
* kselftest-seccomp
* kselftest-sigaltstack
* kselftest-size
* kselftest-tc-testing
* kselftest-timers
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user_events
* kselftest-vDSO
* kselftest-x86
* kunit
* kvm-unit-tests
* lava
* libgpiod
* libhugetlbfs
* log-parser-boot
* log-parser-build-clang
* log-parser-build-gcc
* log-parser-test
* ltp-capability
* ltp-commands
* ltp-containers
* ltp-controllers
* ltp-cpuhotplug
* ltp-crypto
* ltp-cve
* ltp-dio
* ltp-fcntl-locktests
* ltp-fs
* ltp-fs_bind
* ltp-fs_perms_simple
* ltp-hugetlb
* ltp-math
* ltp-mm
* ltp-nptl
* ltp-pty
* ltp-sched
* ltp-smoke
* ltp-syscalls
* ltp-tracing
* perf
* rcutorture
* rt-tests-cyclicdeadline
* rt-tests-pi-stress
* rt-tests-pmqtest
* rt-tests-rt-migrate-test
* rt-tests-signaltest
--
Linaro LKFT
https://lkft.linaro.org
Quoted 4 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.16.12 release. There are 41 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Quoted 2 lines
Responses should be made by Sun, 12 Oct 2025 13:13:18 +0000. Anything received after that time might be too late.
Late on a Friday with a deadline on Sunday isn't the idea way to get tetsing...
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.16.12 release. There are 41 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 12 Oct 2025 13:13:18 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.16.12-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.16.y
and the diffstat can be found below.thanks,
greg k-h
Built and booted successfully on RISC-V RV64 (HiFive Unmatched).
# Librecast Test Results
010/010 [ OK ] libmld
120/120 [ OK ] liblibrecast
CPU/kernel: Linux auntie 6.16.12-rc1-ge006d63d59f2 #103 SMP PREEMPT_DYNAMIC Sat Oct 11 16:53:44 -00 2025 x86_64 AMD Ryzen 9 9950X 16-Core Processor AuthenticAMD GNU/Linux
Am 10.10.2025 um 15:15 schrieb Greg Kroah-Hartman:
Quoted 4 lines
This is the start of the stable review cycle for the 6.16.12 release. There are 41 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Builds, boots and works on my 2-socket Ivy Bridge Xeon E5-2697 v2 server. No dmesg oddities or regressions found.
Beste Grüße,
Peter Schneider
Signature · 8 lines
Climb the mountain not to plant your flag, but to embrace the challenge, enjoy the air and behold the view. Climb it so you can see the world, not so the world can see you. -- David McCullough Jr. OpenPGP: 0xA3828BD796CCE11A8CADE8866E3A92C92C3FF244 Download: https://www.peters-netzplatz.de/download/pschneider1968_pub.asc https://keys.mailvelope.com/pks/lookup?op=get&[email protected] https://keys.mailvelope.com/pks/lookup?op=get&[email protected]
Quoted 8 lines · On Fri, 10 Oct 2025 15:15:48 +0200 Greg Kroah-Hartman…
This is the start of the stable review cycle for the 6.16.12 release. There are 41 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun, 12 Oct 2025 13:13:18 +0000. Anything received after that time might be too late.
Boot-tested under QEMU for Rust x86_64, arm64 and riscv64; built-tested for arm and loongarch64:
Thanks!
Cheers,
Miguel