6.10.6-rc1 review
Greg Kroah-Hartman
maintainercover 6.10.6-rc1 review
This is the start of the stable review cycle for the 6.10.6 release. There are 22 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 Sat, 17 Aug 2024 13:18:17 +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.10.6-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.10.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 6.10.6-rc1
Srinivasan Shanmugam <[email protected]>
drm/amdgpu/display: Fix null pointer dereference in dc_stream_program_cursor_position
Wayne Lin <[email protected]>
drm/amd/display: Solve mst monitors blank out problem after resume
Kees Cook <[email protected]>
binfmt_flat: Fix corruption when not offsetting data start
Gergo Koteles <[email protected]>
platform/x86: ideapad-laptop: add a mutex to synchronize VPC commands
Gergo Koteles <[email protected]>
platform/x86: ideapad-laptop: move ymc_trigger_ec from lenovo-ymc
Gergo Koteles <[email protected]>
platform/x86: ideapad-laptop: introduce a generic notification chain
Shyam Sundar S K <[email protected]>
platform/x86/amd/pmf: Fix to Update HPD Data When ALS is Disabled
Takashi Iwai <[email protected]>
ALSA: usb: Fix UBSAN warning in parse_audio_unit()
Konstantin Komarov <[email protected]>
fs/ntfs3: Do copy_to_user out of run_lock
Pei Li <[email protected]>
jfs: Fix shift-out-of-bounds in dbDiscardAG
Edward Adam Davis <[email protected]>
jfs: fix null ptr deref in dtInsertEntry
Willem de Bruijn <[email protected]>
fou: remove warn in gue_gro_receive on unsupported protocol
Chao Yu <[email protected]>
f2fs: fix to cover read extent cache access with lock
Chao Yu <[email protected]>
f2fs: fix to do sanity check on F2FS_INLINE_DATA flag in inode during GC
yunshui <[email protected]>
bpf, net: Use DEV_STAT_INC()
Simon Trimmer <[email protected]>
ASoC: cs35l56: Patch CS35L56_IRQ1_MASK_18 to the default value
WangYuli <[email protected]>
nvme/pci: Add APST quirk for Lenovo N60z laptop
Huacai Chen <[email protected]>
LoongArch: Define __ARCH_WANT_NEW_STAT in unistd.h
Fangzhi Zuo <[email protected]>
drm/amd/display: Prevent IPX From Link Detect and Set Mode
Harry Wentland <[email protected]>
drm/amd/display: Separate setting and programming of cursor
Wayne Lin <[email protected]>
drm/amd/display: Defer handling mst up request in resume
Kees Cook <[email protected]>
exec: Fix ToCToU between perm check and set-uid/gid usage
-------------
Diffstat:
Makefile | 4 +- arch/loongarch/include/uapi/asm/unistd.h | 1 + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 6 +- drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 94 ++++++++----- drivers/gpu/drm/amd/display/dc/dc_stream.h | 8 ++ .../drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c | 2 +- drivers/nvme/host/pci.c | 7 + drivers/platform/x86/Kconfig | 1 + drivers/platform/x86/amd/pmf/spc.c | 32 ++--- drivers/platform/x86/ideapad-laptop.c | 148 ++++++++++++++++++--- drivers/platform/x86/ideapad-laptop.h | 9 ++ drivers/platform/x86/lenovo-ymc.c | 60 +-------- fs/binfmt_flat.c | 4 +- fs/exec.c | 8 +- fs/f2fs/extent_cache.c | 50 +++---- fs/f2fs/f2fs.h | 2 +- fs/f2fs/gc.c | 10 ++ fs/f2fs/inode.c | 10 +- fs/jfs/jfs_dmap.c | 2 + fs/jfs/jfs_dtree.c | 2 + fs/ntfs3/frecord.c | 75 ++++++++++- net/core/filter.c | 8 +- net/ipv4/fou_core.c | 2 +- sound/soc/codecs/cs35l56-shared.c | 1 + sound/usb/mixer.c | 7 + 26 files changed, 388 insertions(+), 179 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/22 exec: Fix ToCToU between perm check and set-uid/gid usage
6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kees Cook <[email protected]>
commit f50733b45d865f91db90919f8311e2127ce5a0cb upstream.
When opening a file for exec via do_filp_open(), permission checking is done against the file's metadata at that moment, and on success, a file pointer is passed back. Much later in the execve() code path, the file metadata (specifically mode, uid, and gid) is used to determine if/how to set the uid and gid. However, those values may have changed since the permissions check, meaning the execution may gain unintended privileges.
For example, if a file could change permissions from executable and not set-id:
---------x 1 root root 16048 Aug 7 13:16 target
to set-id and non-executable:
---S------ 1 root root 16048 Aug 7 13:16 target
it is possible to gain root privileges when execution should have been disallowed.
While this race condition is rare in real-world scenarios, it has been observed (and proven exploitable) when package managers are updating the setuid bits of installed programs. Such files start with being world-executable but then are adjusted to be group-exec with a set-uid bit. For example, "chmod o-x,u+s target" makes "target" executable only by uid "root" and gid "cdrom", while also becoming setuid-root:
-rwxr-xr-x 1 root cdrom 16048 Aug 7 13:16 target
becomes:
-rwsr-xr-- 1 root cdrom 16048 Aug 7 13:16 target
But racing the chmod means users without group "cdrom" membership can get the permission to execute "target" just before the chmod, and when the chmod finishes, the exec reaches brpm_fill_uid(), and performs the setuid to root, violating the expressed authorization of "only cdrom group members can setuid to root".
Re-check that we still have execute permissions in case the metadata has changed. It would be better to keep a copy from the perm-check time, but until we can do that refactoring, the least-bad option is to do a full inode_permission() call (under inode lock). It is understood that this is safe against dead-locks, but hardly optimal.
--- fs/exec.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
fs/exec.c +7 -1
@@ -1668,6 +1668,7 @@ static void bprm_fill_uid(struct linux_bunsigned int mode;vfsuid_t vfsuid;vfsgid_t vfsgid; +int err;if (!mnt_may_suid (file->f_path.mnt))return ;
@@ -1684,12 +1685,17 @@ static void bprm_fill_uid(struct linux_b/* Be careful if suid/sgid is set */ inode_lock (inode); -/* reload atomically mode/uid/gid now that lock held */ +/* Atomically reload and check mode/uid/gid now that lock held. */ mode = inode->i_mode; vfsuid =i_uid_into_vfsuid (idmap, inode); vfsgid =i_gid_into_vfsgid (idmap, inode); + err =inode_permission (idmap, inode,MAY_EXEC );inode_unlock (inode); +/* Did the exec bit vanish out from under us? Give up. */ +if (err) +return ; +/* We ignore suid/sgid if there are no mappings for them in the ns */ if (!vfsuid_has_mapping (bprm->cred->user_ns, vfsuid) || !vfsgid_has_mapping (bprm->cred->user_ns, vfsgid))
Greg Kroah-Hartman
maintainerPATCH 2/22 drm/amd/display: Defer handling mst up request in resume
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wayne Lin <[email protected]>
commit 202dc359addab29451d3d18243c3d957da5392c8 upstream.
[Why]
Like commit ec5fa9fcdeca ("drm/amd/display: Adjust the MST resume flow"), we want to avoid handling mst topology changes before restoring the old state. If we enable DP_UP_REQ_EN before calling drm_atomic_helper_resume(), have changce to handle CSN event first and fire hotplug event before restoring the cached state.
[How]
Disable mst branch sending up request event before we restoring the cached state. DP_UP_REQ_EN will be set later when we call drm_dp_mst_topology_mgr_resume().
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 1 - 1 file changed, 1 deletion(-)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +0 -1
@@ -2418,7 +2418,6 @@ static void resume_mst_branch_status(str ret =drm_dp_dpcd_writeb (mgr->aux,DP_MSTM_CTRL ,DP_MST_EN | -DP_UP_REQ_EN |DP_UPSTREAM_IS_SRC );if (ret <0 ) {drm_dbg_kms (mgr->dev,"mst write failed - undocked during suspend?\n" );
Greg Kroah-Hartman
maintainerPATCH 3/22 drm/amd/display: Separate setting and programming of cursor
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Harry Wentland <[email protected]>
commit f63f86b5affcc2abd1162f11824b9386fc06ac94 upstream.
We're seeing issues when user-space tries to do an atomic update of the primary surface, as well as the cursor. These two updates are separate calls into DC and don't currently act as an atomic update. This might lead to cursor updates being locked out and cursors stuttering.
In order to solve this problem we want to separate the setting and programming of cursor attributes and position. That's what we're doing in this patch. The subsequent patch will then be able to use the cursor setters in independent cursor updates, as well as in atomic commits.
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 6 - drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 89 ++++++++++------ drivers/gpu/drm/amd/display/dc/dc_stream.h | 8 + drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c | 2 5 files changed, 73 insertions(+), 34 deletions(-)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +1 -1
@@ -8947,7 +8947,7 @@ static void amdgpu_dm_commit_streams(strmemset (&position,0 ,sizeof (position));mutex_lock (&dm->dc_lock); -dc_stream_set_cursor_position (dm_old_crtc_state->stream, &position); +dc_stream_program_cursor_position (dm_old_crtc_state->stream, &position);mutex_unlock (&dm->dc_lock); }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c +3 -3
@@ -1254,7 +1254,7 @@ void amdgpu_dm_plane_handle_cursor_updat/* turn off cursor */ if (crtc_state && crtc_state->stream) {mutex_lock (&adev->dm.dc_lock); -dc_stream_set_cursor_position (crtc_state->stream, +dc_stream_program_cursor_position (crtc_state->stream, &position);mutex_unlock (&adev->dm.dc_lock); }
@@ -1284,11 +1284,11 @@ void amdgpu_dm_plane_handle_cursor_updatif (crtc_state->stream) {mutex_lock (&adev->dm.dc_lock); -if (!dc_stream_set_cursor_attributes (crtc_state->stream, +if (!dc_stream_program_cursor_attributes (crtc_state->stream, &attributes))DRM_ERROR ("DC failed to set cursor attributes\n" ); -if (!dc_stream_set_cursor_position (crtc_state->stream, +if (!dc_stream_program_cursor_position (crtc_state->stream, &position))DRM_ERROR ("DC failed to set cursor position\n" );mutex_unlock (&adev->dm.dc_lock);
drivers/gpu/drm/amd/display/dc/core/dc_stream.c +60 -29
120 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/dc_stream.h +8 -0
@@ -470,10 +470,18 @@ bool dc_stream_set_cursor_attributes(struct dc_stream_state *stream, const struct dc_cursor_attributes *attributes); +bool dc_stream_program_cursor_attributes ( +struct dc_stream_state *stream, +const struct dc_cursor_attributes *attributes); +bool dc_stream_set_cursor_position (struct dc_stream_state *stream,const struct dc_cursor_position *position); +bool dc_stream_program_cursor_position ( +struct dc_stream_state *stream, +const struct dc_cursor_position *position); + bool dc_stream_adjust_vmin_vmax(struct dc *dc, struct dc_stream_state *stream,
drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c +1 -1
@@ -1041,7 +1041,7 @@ bool dcn30_apply_idle_power_optimization/* Use copied cursor, and it's okay to not switch back */ cursor_attr.address.quad_part = cmd.mall.cursor_copy_dst.quad_part; -dc_stream_set_cursor_attributes (stream, &cursor_attr); +dc_stream_program_cursor_attributes (stream, &cursor_attr); }/* Enable MALL */
Greg Kroah-Hartman
maintainerPATCH 4/22 drm/amd/display: Prevent IPX From Link Detect and Set Mode
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Fangzhi Zuo <[email protected]>
commit 1ff6631baeb1f5d69be192732d0157a06b43f20a upstream.
IPX involvment proven to affect LT, causing link loss. Need to prevent IPX enabled in LT process in which link detect and set mode are main procedures that have LT taken place.
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +10 -0
@@ -2943,6 +2943,7 @@ static int dm_resume(void *handle) commit_params.streams = dc_state->streams; commit_params.stream_count = dc_state->stream_count; +dc_exit_ips_for_hw_access (dm->dc);WARN_ON (!dc_commit_streams (dm->dc, &commit_params));dm_gpureset_commit_state (dm->cached_dc_state, dm);
@@ -3015,6 +3016,7 @@ static int dm_resume(void *handle)emulated_link_detect (aconnector->dc_link); }else {mutex_lock (&dm->dc_lock); +dc_exit_ips_for_hw_access (dm->dc);dc_link_detect (aconnector->dc_link,DETECT_REASON_HPD );mutex_unlock (&dm->dc_lock); }
@@ -3351,6 +3353,7 @@ static void handle_hpd_irq_helper(structenum dc_connection_type new_connection_type = dc_connection_none;struct amdgpu_device *adev =drm_to_adev (dev);struct dm_connector_state *dm_con_state =to_dm_connector_state (connector->state); +struct dc *dc = aconnector->dc_link->ctx->dc;bool ret = false;if (adev->dm.disable_hpd_irq)
@@ -3385,6 +3388,7 @@ static void handle_hpd_irq_helper(structdrm_kms_helper_connector_hotplug_event (connector); }else {mutex_lock (&adev->dm.dc_lock); +dc_exit_ips_for_hw_access (dc); ret =dc_link_detect (aconnector->dc_link,DETECT_REASON_HPD );mutex_unlock (&adev->dm.dc_lock);if (ret) {
@@ -3444,6 +3448,7 @@ static void handle_hpd_rx_irq(void *parabool has_left_work = false;int idx = dc_link->link_index;struct hpd_rx_irq_offload_work_queue *offload_wq = &adev->dm.hpd_rx_offload_wq[idx]; +struct dc *dc = aconnector->dc_link->ctx->dc;memset (&hpd_irq_data,0 ,sizeof (hpd_irq_data));
@@ -3533,6 +3538,7 @@ out:bool ret = false;mutex_lock (&adev->dm.dc_lock); +dc_exit_ips_for_hw_access (dc); ret =dc_link_detect (dc_link,DETECT_REASON_HPDRX );mutex_unlock (&adev->dm.dc_lock);
@@ -4639,6 +4645,7 @@ static int amdgpu_dm_initialize_drm_devibool ret = false;mutex_lock (&dm->dc_lock); +dc_exit_ips_for_hw_access (dm->dc); ret =dc_link_detect (link,DETECT_REASON_BOOT );mutex_unlock (&dm->dc_lock);
@@ -8947,6 +8954,7 @@ static void amdgpu_dm_commit_streams(strmemset (&position,0 ,sizeof (position));mutex_lock (&dm->dc_lock); +dc_exit_ips_for_hw_access (dm->dc);dc_stream_program_cursor_position (dm_old_crtc_state->stream, &position);mutex_unlock (&dm->dc_lock); }
@@ -9016,6 +9024,7 @@ static void amdgpu_dm_commit_streams(strdm_enable_per_frame_crtc_master_sync (dc_state);mutex_lock (&dm->dc_lock); +dc_exit_ips_for_hw_access (dm->dc);WARN_ON (!dc_commit_streams (dm->dc, ¶ms));/* Allow idle optimization when vblank count is 0 for display off */
@@ -9381,6 +9390,7 @@ static void amdgpu_dm_atomic_commit_tailmutex_lock (&dm->dc_lock); +dc_exit_ips_for_hw_access (dm->dc); dc_update_planes_and_stream(dm->dc, dummy_updates, status->plane_count,
Greg Kroah-Hartman
maintainerPATCH 5/22 LoongArch: Define __ARCH_WANT_NEW_STAT in unistd.h
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Huacai Chen <[email protected]>
commit 7697a0fe0154468f5df35c23ebd7aa48994c2cdc upstream.
Chromium sandbox apparently wants to deny statx [1] so it could properly inspect arguments after the sandboxed process later falls back to fstat. Because there's currently not a "fd-only" version of statx, so that the sandbox has no way to ensure the path argument is empty without being able to peek into the sandboxed process's memory. For architectures able to do newfstatat though, glibc falls back to newfstatat after getting -ENOSYS for statx, then the respective SIGSYS handler [2] takes care of inspecting the path argument, transforming allowed newfstatat's into fstat instead which is allowed and has the same type of return value.
But, as LoongArch is the first architecture to not have fstat nor newfstatat, the LoongArch glibc does not attempt falling back at all when it gets -ENOSYS for statx -- and you see the problem there!
Actually, back when the LoongArch port was under review, people were aware of the same problem with sandboxing clone3 [3], so clone was eventually kept. Unfortunately it seemed at that time no one had noticed statx, so besides restoring fstat/newfstatat to LoongArch uapi (and postponing the problem further), it seems inevitable that we would need to tackle seccomp deep argument inspection.
However, this is obviously a decision that shouldn't be taken lightly, so we just restore fstat/newfstatat by defining __ARCH_WANT_NEW_STAT in unistd.h. This is the simplest solution for now, and so we hope the community will tackle the long-standing problem of seccomp deep argument inspection in the future [4][5].
Also add "newstat" to syscall_abis_64 in Makefile.syscalls due to upstream asm-generic changes.
More infomation please reading this thread [6].
[1] https://chromium-review.googlesource.com/c/chromium/src/+/2823150
[2] https://chromium.googlesource.com/chromium/src/sandbox/+/c085b51940bd/linux/seccomp-bpf-helpers/sigsys_handlers.cc#355
[3] https://lore.kernel.org/linux-arch/[email protected]/
[4] https://lwn.net/Articles/799557/
[5] https://lpc.events/event/4/contributions/560/attachments/397/640/deep-arg-inspection.pdf
[6] https://lore.kernel.org/loongarch/20240226-granit-seilschaft-eccc2433014d@brauner/T/#t
--- arch/loongarch/include/uapi/asm/unistd.h | 1 + 1 file changed, 1 insertion(+)
arch/loongarch/include/uapi/asm/unistd.h +1 -0
@@ -1,4 +1,5 @@/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +#define __ARCH_WANT_NEW_STAT#define __ARCH_WANT_SYS_CLONE#define __ARCH_WANT_SYS_CLONE3
Greg Kroah-Hartman
maintainerPATCH 6/22 nvme/pci: Add APST quirk for Lenovo N60z laptop
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: WangYuli <[email protected]>
commit ab091ec536cb7b271983c0c063b17f62f3591583 upstream.
There is a hardware power-saving problem with the Lenovo N60z board. When turn it on and leave it for 10 hours, there is a 20% chance that a nvme disk will not wake up until reboot.
--- drivers/nvme/host/pci.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/nvme/host/pci.c +7 -0
@@ -2933,6 +2933,13 @@ static unsigned long check_vendor_combinreturn NVME_QUIRK_FORCE_NO_SIMPLE_SUSPEND ; } +/* +* NVMe SSD drops off the PCIe bus after system idle +* for 10 hours on a Lenovo N60z board. +*/ +if (dmi_match (DMI_BOARD_NAME ,"LXKT-ZXEG-N6" )) +return NVME_QUIRK_NO_APST ; +return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 7/22 ASoC: cs35l56: Patch CS35L56_IRQ1_MASK_18 to the default value
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Simon Trimmer <[email protected]>
commit 72776774b55bb59b7b1b09117e915a5030110304 upstream.
Device tuning files made with early revision tooling may contain configuration that can unmask IRQ signals that are owned by the host.
Adding a safe default to the regmap patch ensures that the hardware matches the driver expectations.
--- sound/soc/codecs/cs35l56-shared.c | 1 + 1 file changed, 1 insertion(+)
sound/soc/codecs/cs35l56-shared.c +1 -0
@@ -36,6 +36,7 @@ static const struct reg_sequence cs35l56 { CS35L56_SWIRE_DP3_CH2_INPUT, 0x00000019 }, { CS35L56_SWIRE_DP3_CH3_INPUT, 0x00000029 }, { CS35L56_SWIRE_DP3_CH4_INPUT, 0x00000028 }, + { CS35L56_IRQ1_MASK_18, 0x1f7df0ff },/* These are not reset by a soft-reset, so patch to defaults. */ { CS35L56_MAIN_RENDER_USER_MUTE, 0x00000000 },
Greg Kroah-Hartman
maintainerPATCH 8/22 bpf, net: Use DEV_STAT_INC()
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: yunshui <[email protected]>
[ Upstream commit d9cbd8343b010016fcaabc361c37720dcafddcbe ]
syzbot/KCSAN reported that races happen when multiple CPUs updating dev->stats.tx_error concurrently. Adopt SMP safe DEV_STATS_INC() to update the dev->stats fields.
--- net/core/filter.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
net/core/filter.c +4 -4
@@ -2279,12 +2279,12 @@ static int __bpf_redirect_neigh_v6(struct sk_buff *skb, struct net_device *dev, err =bpf_out_neigh_v6 (net, skb, dev, nh);if (unlikely (net_xmit_eval (err))) - dev->stats.tx_errors++; +DEV_STATS_INC (dev, tx_errors);else ret =NET_XMIT_SUCCESS ; goto out_xmit; out_drop: - dev->stats.tx_errors++; +DEV_STATS_INC (dev, tx_errors);kfree_skb (skb); out_xmit:return ret;
@@ -2385,12 +2385,12 @@ static int __bpf_redirect_neigh_v4(struct sk_buff *skb, struct net_device *dev, err =bpf_out_neigh_v4 (net, skb, dev, nh);if (unlikely (net_xmit_eval (err))) - dev->stats.tx_errors++; +DEV_STATS_INC (dev, tx_errors);else ret =NET_XMIT_SUCCESS ; goto out_xmit; out_drop: - dev->stats.tx_errors++; +DEV_STATS_INC (dev, tx_errors);kfree_skb (skb); out_xmit:return ret;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 9/22 f2fs: fix to do sanity check on F2FS_INLINE_DATA flag in inode during GC
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chao Yu <[email protected]>
[ Upstream commit fc01008c92f40015aeeced94750855a7111b6929 ]
syzbot reports a f2fs bug as below:
------------[ cut here ]------------ kernel BUG at fs/f2fs/inline.c:258! CPU: 1 PID: 34 Comm: kworker/u8:2 Not tainted 6.9.0-rc6-syzkaller-00012-g9e4bc4bcae01 #0 RIP: 0010:f2fs_write_inline_data+0x781/0x790 fs/f2fs/inline.c:258 Call Trace: f2fs_write_single_data_page+0xb65/0x1d60 fs/f2fs/data.c:2834 f2fs_write_cache_pages fs/f2fs/data.c:3133 [inline] __f2fs_write_data_pages fs/f2fs/data.c:3288 [inline] f2fs_write_data_pages+0x1efe/0x3a90 fs/f2fs/data.c:3315 do_writepages+0x35b/0x870 mm/page-writeback.c:2612 __writeback_single_inode+0x165/0x10b0 fs/fs-writeback.c:1650 writeback_sb_inodes+0x905/0x1260 fs/fs-writeback.c:1941 wb_writeback+0x457/0xce0 fs/fs-writeback.c:2117 wb_do_writeback fs/fs-writeback.c:2264 [inline] wb_workfn+0x410/0x1090 fs/fs-writeback.c:2304 process_one_work kernel/workqueue.c:3254 [inline] process_scheduled_works+0xa12/0x17c0 kernel/workqueue.c:3335 worker_thread+0x86d/0xd70 kernel/workqueue.c:3416 kthread+0x2f2/0x390 kernel/kthread.c:388 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
The root cause is: inline_data inode can be fuzzed, so that there may be valid blkaddr in its direct node, once f2fs triggers background GC to migrate the block, it will hit f2fs_bug_on() during dirty page writeback.
Let's add sanity check on F2FS_INLINE_DATA flag in inode during GC, so that, it can forbid migrating inline_data inode's data block for fixing.
--- fs/f2fs/gc.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
fs/f2fs/gc.c +10 -0
@@ -1566,6 +1566,16 @@ static int gc_data_segment(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,continue ; } +if (f2fs_has_inline_data (inode)) { +iput (inode); +set_sbi_flag (sbi,SBI_NEED_FSCK ); +f2fs_err_ratelimited (sbi, +"inode %lx has both inline_data flag and " +"data block, nid=%u, ofs_in_node=%u" , + inode->i_ino, dni.nid, ofs_in_node); +continue ; + } + err =f2fs_gc_pinned_control (inode, gc_type, segno);if (err == -EAGAIN ) {iput (inode);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 10/22 f2fs: fix to cover read extent cache access with lock
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chao Yu <[email protected]>
[ Upstream commit d7409b05a64f212735f0d33f5f1602051a886eab ]
syzbot reports a f2fs bug as below:
BUG: KASAN: slab-use-after-free in sanity_check_extent_cache+0x370/0x410 fs/f2fs/extent_cache.c:46 Read of size 4 at addr ffff8880739ab220 by task syz-executor200/5097 CPU: 0 PID: 5097 Comm: syz-executor200 Not tainted 6.9.0-rc6-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024 Call Trace: <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114 print_address_description mm/kasan/report.c:377 [inline] print_report+0x169/0x550 mm/kasan/report.c:488 kasan_report+0x143/0x180 mm/kasan/report.c:601 sanity_check_extent_cache+0x370/0x410 fs/f2fs/extent_cache.c:46 do_read_inode fs/f2fs/inode.c:509 [inline] f2fs_iget+0x33e1/0x46e0 fs/f2fs/inode.c:560 f2fs_nfs_get_inode+0x74/0x100 fs/f2fs/super.c:3237 generic_fh_to_dentry+0x9f/0xf0 fs/libfs.c:1413 exportfs_decode_fh_raw+0x152/0x5f0 fs/exportfs/expfs.c:444 exportfs_decode_fh+0x3c/0x80 fs/exportfs/expfs.c:584 do_handle_to_path fs/fhandle.c:155 [inline] handle_to_path fs/fhandle.c:210 [inline] do_handle_open+0x495/0x650 fs/fhandle.c:226 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf5/0x240 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f
We missed to cover sanity_check_extent_cache() w/ extent cache lock, so, below race case may happen, result in use after free issue.
- f2fs_iget
- do_read_inode
- f2fs_init_read_extent_tree
: add largest extent entry in to cache
- shrink
- f2fs_shrink_read_extent_tree
- __shrink_extent_tree
- __detach_extent_node : drop largest extent entry
- sanity_check_extent_cache
: access et->largest w/o lock
let's refactor sanity_check_extent_cache() to avoid extent cache access and call it before f2fs_init_read_extent_tree() to fix this issue.
--- fs/f2fs/extent_cache.c | 48 +++++++++++++++++------------------------- fs/f2fs/f2fs.h | 2 +- fs/f2fs/inode.c | 10 ++++----- 3 files changed, 25 insertions(+), 35 deletions(-)
fs/f2fs/extent_cache.c +19 -29
@@ -19,33 +19,23 @@#include "node.h" #include <trace/events/f2fs.h> -bool sanity_check_extent_cache (struct inode *inode) +bool sanity_check_extent_cache (struct inode *inode,struct page *ipage) {struct f2fs_sb_info *sbi =F2FS_I_SB (inode); -struct f2fs_inode_info *fi =F2FS_I (inode); -struct extent_tree *et = fi->extent_tree[EX_READ ]; -struct extent_info *ei; - -if (!et) -return true; +struct f2fs_extent *i_ext = &F2FS_INODE (ipage)->i_ext; +struct extent_info ei; - ei = &et->largest; -if (!ei->len) -return true; +get_read_extent_info (&ei, i_ext); -/* Let's drop, if checkpoint got corrupted. */ -if (is_set_ckpt_flags (sbi,CP_ERROR_FLAG )) { - ei->len =0 ; - et->largest_updated = true; +if (!ei.len)return true; - } -if (!f2fs_is_valid_blkaddr (sbi, ei->blk,DATA_GENERIC_ENHANCE ) || - !f2fs_is_valid_blkaddr (sbi, ei->blk + ei->len -1 , +if (!f2fs_is_valid_blkaddr (sbi, ei.blk,DATA_GENERIC_ENHANCE ) || + !f2fs_is_valid_blkaddr (sbi, ei.blk + ei.len -1 ,DATA_GENERIC_ENHANCE )) {f2fs_warn (sbi,"%s: inode (ino=%lx) extent info [%u, %u, %u] is incorrect, run fsck to fix" , __func__, inode->i_ino, - ei->blk, ei->fofs, ei->len); + ei.blk, ei.fofs, ei.len);return false; }return true;
@@ -394,24 +384,22 @@ void f2fs_init_read_extent_tree(struct inode *inode, struct page *ipage)if (!__may_extent_tree (inode,EX_READ )) {/* drop largest read extent */ -if (i_ext && i_ext->len) { +if (i_ext->len) {f2fs_wait_on_page_writeback (ipage,NODE , true, true); i_ext->len =0 ;set_page_dirty (ipage); } - goto out; +set_inode_flag (inode,FI_NO_EXTENT ); +return ; } et =__grab_extent_tree (inode,EX_READ ); -if (!i_ext || !i_ext->len) - goto out; -get_read_extent_info (&ei, i_ext);write_lock (&et->lock); -if (atomic_read (&et->node_cnt)) - goto unlock_out; +if (atomic_read (&et->node_cnt) || !ei.len) + goto skip; en =__attach_extent_node (sbi, et, &ei,NULL , &et->root.rb_root.rb_node, true);
@@ -423,11 +411,13 @@ void f2fs_init_read_extent_tree(struct inode *inode, struct page *ipage)list_add_tail (&en->list, &eti->extent_list);spin_unlock (&eti->extent_lock); } -unlock_out: +skip: +/* Let's drop, if checkpoint got corrupted. */ +if (f2fs_cp_error (sbi)) { + et->largest.len =0 ; + et->largest_updated = true; + }write_unlock (&et->lock); -out: -if (!F2FS_I (inode)->extent_tree[EX_READ ]) -set_inode_flag (inode,FI_NO_EXTENT ); }void f2fs_init_age_extent_tree (struct inode *inode)
fs/f2fs/f2fs.h +1 -1
@@ -4195,7 +4195,7 @@ void f2fs_leave_shrinker(struct f2fs_sb_info *sbi);/* * extent_cache.c */ -bool sanity_check_extent_cache (struct inode *inode); +bool sanity_check_extent_cache (struct inode *inode,struct page *ipage);void f2fs_init_extent_tree (struct inode *inode);void f2fs_drop_extent_tree (struct inode *inode);void f2fs_destroy_extent_node (struct inode *inode);
fs/f2fs/inode.c +5 -5
@@ -511,16 +511,16 @@ static int do_read_inode(struct inode *inode)init_idisk_time (inode); -/* Need all the flag bits */ -f2fs_init_read_extent_tree (inode, node_page); -f2fs_init_age_extent_tree (inode); - -if (!sanity_check_extent_cache (inode)) { +if (!sanity_check_extent_cache (inode, node_page)) {f2fs_put_page (node_page,1 );f2fs_handle_error (sbi,ERROR_CORRUPTED_INODE );return -EFSCORRUPTED ; } +/* Need all the flag bits */ +f2fs_init_read_extent_tree (inode, node_page); +f2fs_init_age_extent_tree (inode); +f2fs_put_page (node_page,1 );stat_inc_inline_xattr (inode);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 11/22 fou: remove warn in gue_gro_receive on unsupported protocol
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Willem de Bruijn <[email protected]>
[ Upstream commit dd89a81d850fa9a65f67b4527c0e420d15bf836c ]
Drop the WARN_ON_ONCE inn gue_gro_receive if the encapsulated type is not known or does not have a GRO handler.
Such a packet is easily constructed. Syzbot generates them and sets off this warning.
Remove the warning as it is expected and not actionable.
The warning was previously reduced from WARN_ON to WARN_ON_ONCE in commit 270136613bf7 ("fou: Do WARN_ON_ONCE in gue_gro_receive for bad proto callbacks").
--- net/ipv4/fou_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/ipv4/fou_core.c +1 -1
@@ -433,7 +433,7 @@ static struct sk_buff *gue_gro_receive(struct sock *sk, offloads =NAPI_GRO_CB (skb)->is_ipv6 ? inet6_offloads : inet_offloads; ops =rcu_dereference (offloads[proto]); -if (WARN_ON_ONCE (!ops || !ops->callbacks.gro_receive)) +if (!ops || !ops->callbacks.gro_receive) goto out; pp =call_gro_receive (ops->callbacks.gro_receive, head, skb);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 12/22 jfs: fix null ptr deref in dtInsertEntry
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Edward Adam Davis <[email protected]>
[ Upstream commit ce6dede912f064a855acf6f04a04cbb2c25b8c8c ]
[syzbot reported]
general protection fault, probably for non-canonical address 0xdffffc0000000001: 0000 [#1] PREEMPT SMP KASAN PTI KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f] CPU: 0 PID: 5061 Comm: syz-executor404 Not tainted 6.8.0-syzkaller-08951-gfe46a7dd189e #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024 RIP: 0010:dtInsertEntry+0xd0c/0x1780 fs/jfs/jfs_dtree.c:3713
...
[Analyze]
In dtInsertEntry(), when the pointer h has the same value as p, after writing name in UniStrncpy_to_le(), p->header.flag will be cleared. This will cause the previously true judgment "p->header.flag & BT-LEAF" to change to no after writing the name operation, this leads to entering an incorrect branch and accessing the uninitialized object ih when judging this condition for the second time.
[Fix]
After got the page, check freelist first, if freelist == 0 then exit dtInsert() and return -EINVAL.
--- fs/jfs/jfs_dtree.c | 2 ++ 1 file changed, 2 insertions(+)
fs/jfs/jfs_dtree.c +2 -0
@@ -834,6 +834,8 @@ int dtInsert(tid_t tid, struct inode *ip,* the full page. */ DT_GETSEARCH (ip, btstack->top, bn, mp, p, index); +if (p->header.freelist ==0 ) +return -EINVAL ;/* * insert entry for new key
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 13/22 jfs: Fix shift-out-of-bounds in dbDiscardAG
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pei Li <[email protected]>
[ Upstream commit 7063b80268e2593e58bee8a8d709c2f3ff93e2f2 ]
When searching for the next smaller log2 block, BLKSTOL2() returned 0, causing shift exponent -1 to be negative.
This patch fixes the issue by exiting the loop directly when negative shift is found.
--- fs/jfs/jfs_dmap.c | 2 ++ 1 file changed, 2 insertions(+)
fs/jfs/jfs_dmap.c +2 -0
@@ -1626,6 +1626,8 @@ s64 dbDiscardAG(struct inode *ip, int agno, s64 minlen) }else if (rc == -ENOSPC ) {/* search for next smaller log2 block */ l2nb =BLKSTOL2 (nblocks) -1 ; +if (unlikely (l2nb <0 )) +break ; nblocks =1LL << l2nb; }else {/* Trim any already allocated blocks */
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 14/22 fs/ntfs3: Do copy_to_user out of run_lock
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konstantin Komarov <[email protected]>
[ Upstream commit d57431c6f511bf020e474026d9f3123d7bfbea8c ]
In order not to call copy_to_user (from fiemap_fill_next_extent) we allocate memory in the kernel, fill it and copy it to user memory after up_read(run_lock).
--- fs/ntfs3/frecord.c | 75 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 3 deletions(-)
fs/ntfs3/frecord.c +72 -3
@@ -1896,6 +1896,47 @@ enum REPARSE_SIGN ni_parse_reparse(struct ntfs_inode *ni, struct ATTRIB *attr,return REPARSE_LINK ; } +/* +* fiemap_fill_next_extent_k - a copy of fiemap_fill_next_extent +* but it accepts kernel address for fi_extents_start +*/ +static int fiemap_fill_next_extent_k (struct fiemap_extent_info *fieinfo, +u64 logical,u64 phys,u64 len,u32 flags) +{ +struct fiemap_extent extent; +struct fiemap_extent __user *dest = fieinfo->fi_extents_start; + +/* only count the extents */ +if (fieinfo->fi_extents_max ==0 ) { + fieinfo->fi_extents_mapped++; +return (flags &FIEMAP_EXTENT_LAST ) ?1 :0 ; + } + +if (fieinfo->fi_extents_mapped >= fieinfo->fi_extents_max) +return 1 ; + +if (flags &FIEMAP_EXTENT_DELALLOC ) + flags |=FIEMAP_EXTENT_UNKNOWN ; +if (flags &FIEMAP_EXTENT_DATA_ENCRYPTED ) + flags |=FIEMAP_EXTENT_ENCODED ; +if (flags & (FIEMAP_EXTENT_DATA_TAIL |FIEMAP_EXTENT_DATA_INLINE )) + flags |=FIEMAP_EXTENT_NOT_ALIGNED ; + +memset (&extent,0 ,sizeof (extent)); + extent.fe_logical = logical; + extent.fe_physical = phys; + extent.fe_length = len; + extent.fe_flags = flags; + + dest += fieinfo->fi_extents_mapped; +memcpy (dest, &extent,sizeof (extent)); + + fieinfo->fi_extents_mapped++; +if (fieinfo->fi_extents_mapped == fieinfo->fi_extents_max) +return 1 ; +return (flags &FIEMAP_EXTENT_LAST ) ?1 :0 ; +} +/* * ni_fiemap - Helper for file_fiemap(). *
@@ -1906,6 +1947,8 @@ int ni_fiemap(struct ntfs_inode *ni, struct fiemap_extent_info *fieinfo, __u64 vbo, __u64 len) { int err = 0; +struct fiemap_extent __user *fe_u = fieinfo->fi_extents_start; +struct fiemap_extent *fe_k =NULL ;struct ntfs_sb_info *sbi = ni->mi.sbi;u8 cluster_bits = sbi->cluster_bits;struct runs_tree *run;
@@ -1953,6 +1996,18 @@ int ni_fiemap(struct ntfs_inode *ni, struct fiemap_extent_info *fieinfo, goto out; } +/* +* To avoid lock problems replace pointer to user memory by pointer to kernel memory. +*/ + fe_k =kmalloc_array (fieinfo->fi_extents_max, +sizeof (struct fiemap_extent ), +GFP_NOFS | __GFP_ZERO); +if (!fe_k) { + err = -ENOMEM ; + goto out; + } + fieinfo->fi_extents_start = fe_k; + end = vbo + len; alloc_size =le64_to_cpu (attr->nres.alloc_size);if (end > alloc_size)
@@ -2041,8 +2096,9 @@ int ni_fiemap(struct ntfs_inode *ni, struct fiemap_extent_info *fieinfo,if (vbo + dlen >= end) flags |=FIEMAP_EXTENT_LAST ; - err =fiemap_fill_next_extent (fieinfo, vbo, lbo, dlen, - flags); + err =fiemap_fill_next_extent_k (fieinfo, vbo, lbo, dlen, + flags); +if (err <0 )break ;if (err ==1 ) {
@@ -2062,7 +2118,8 @@ int ni_fiemap(struct ntfs_inode *ni, struct fiemap_extent_info *fieinfo,if (vbo + bytes >= end) flags |=FIEMAP_EXTENT_LAST ; - err =fiemap_fill_next_extent (fieinfo, vbo, lbo, bytes, flags); + err =fiemap_fill_next_extent_k (fieinfo, vbo, lbo, bytes, + flags);if (err <0 )break ;if (err ==1 ) {
@@ -2075,7 +2132,19 @@ int ni_fiemap(struct ntfs_inode *ni, struct fiemap_extent_info *fieinfo,up_read (run_lock); +/* +* Copy to user memory out of lock +*/ +if (copy_to_user (fe_u, fe_k, + fieinfo->fi_extents_max * +sizeof (struct fiemap_extent ))) { + err = -EFAULT ; + } + out: +/* Restore original pointer. */ + fieinfo->fi_extents_start = fe_u; +kfree (fe_k);return err; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 15/22 ALSA: usb: Fix UBSAN warning in parse_audio_unit()
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
[ Upstream commit 2f38cf730caedaeacdefb7ff35b0a3c1168117f9 ]
A malformed USB descriptor may pass the lengthy mixer description with a lot of channels, and this may overflow the 32bit integer shift size, as caught by syzbot UBSAN test. Although this won't cause any real trouble, it's better to address.
This patch introduces a sanity check of the number of channels to bail out the parsing when too many channels are found.
--- sound/usb/mixer.c | 7 +++++++ 1 file changed, 7 insertions(+)
sound/usb/mixer.c +7 -0
@@ -2021,6 +2021,13 @@ static int parse_audio_feature_unit(struct mixer_build *state, int unitid, bmaControls = ftr->bmaControls; } +if (channels >32 ) { +usb_audio_info (state->chip, +"usbmixer: too many channels (%d) in unit %d\n" , + channels, unitid); +return -EINVAL ; + } +/* parse the source unit */ err =parse_audio_unit (state, hdr->bSourceID);if (err <0 )
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 16/22 platform/x86/amd/pmf: Fix to Update HPD Data When ALS is Disabled
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shyam Sundar S K <[email protected]>
[ Upstream commit 78296429e20052b029211b0aca64aadc5052d581 ]
If the Ambient Light Sensor (ALS) is disabled, the current code in the PMF driver does not query for Human Presence Detection (HPD) data in amd_pmf_get_sensor_info(). As a result, stale HPD data is used by PMF-TA to evaluate policy conditions, leading to unexpected behavior in the policy output actions.
To resolve this issue, modify the PMF driver to query HPD data independently of ALS.
Since user_present is a boolean, modify the current code to return true if the user is present and false if the user is away or if the sensor is not detected, and report this status to the PMF TA firmware accordingly.
With this change, amd_pmf_get_sensor_info() now returns void instead of int.
--- drivers/platform/x86/amd/pmf/spc.c | 32 ++++++++++-------------------- 1 file changed, 11 insertions(+), 21 deletions(-)
drivers/platform/x86/amd/pmf/spc.c +11 -21
@@ -150,36 +150,26 @@ static int amd_pmf_get_slider_info(struct amd_pmf_dev *dev, struct ta_pmf_enact_return 0 ; } -static int amd_pmf_get_sensor_info (struct amd_pmf_dev *dev,struct ta_pmf_enact_table *in) +static void amd_pmf_get_sensor_info (struct amd_pmf_dev *dev,struct ta_pmf_enact_table *in) {struct amd_sfh_info sfh_info; -int ret; + +/* Get the latest information from SFH */ + in->ev_info.user_present = false;/* Get ALS data */ - ret =amd_get_sfh_info (&sfh_info,MT_ALS ); -if (!ret) +if (!amd_get_sfh_info (&sfh_info,MT_ALS )) in->ev_info.ambient_light = sfh_info.ambient_light;else -return ret; +dev_dbg (dev->dev,"ALS is not enabled/detected\n" );/* get HPD data */ - ret =amd_get_sfh_info (&sfh_info,MT_HPD ); -if (ret) -return ret; - -switch (sfh_info.user_present) { -case SFH_NOT_DETECTED : - in->ev_info.user_present =0xff ;/* assume no sensors connected */ -break ; -case SFH_USER_PRESENT : - in->ev_info.user_present =1 ; -break ; -case SFH_USER_AWAY : - in->ev_info.user_present =0 ; -break ; +if (!amd_get_sfh_info (&sfh_info,MT_HPD )) { +if (sfh_info.user_present ==SFH_USER_PRESENT ) + in->ev_info.user_present = true; + }else { +dev_dbg (dev->dev,"HPD is not enabled/detected\n" ); } - -return 0 ; }void amd_pmf_populate_ta_inputs (struct amd_pmf_dev *dev,struct ta_pmf_enact_table *in)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 17/22 platform/x86: ideapad-laptop: introduce a generic notification chain
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gergo Koteles <[email protected]>
[ Upstream commit 613e3900c24bb1379d994f44d75d31c3223cc263 ]
There are several cases where a notification chain can simplify Lenovo WMI drivers.
Add a generic notification chain into ideapad-laptop.
Stable-dep-of: 7cc06e729460 ("platform/x86: ideapad-laptop: add a mutex to synchronize VPC commands")
--- drivers/platform/x86/ideapad-laptop.c | 37 +++++++++++++++++++++++++++ drivers/platform/x86/ideapad-laptop.h | 5 ++++ 2 files changed, 42 insertions(+)
drivers/platform/x86/ideapad-laptop.c +37 -0
@@ -1599,6 +1599,39 @@ static void ideapad_sync_touchpad_state(struct ideapad_private *priv, bool send_ priv->r_touchpad_val = value; } +static int ideapad_laptop_nb_notify (struct notifier_block *nb, +unsigned long action,void *data) +{ +switch (action) { + } + +return 0 ; +} + +static struct notifier_block ideapad_laptop_notifier = { + .notifier_call = ideapad_laptop_nb_notify, +}; + +static BLOCKING_NOTIFIER_HEAD (ideapad_laptop_chain_head); + +int ideapad_laptop_register_notifier (struct notifier_block *nb) +{ +return blocking_notifier_chain_register (&ideapad_laptop_chain_head, nb); +} +EXPORT_SYMBOL_NS_GPL (ideapad_laptop_register_notifier,IDEAPAD_LAPTOP ); + +int ideapad_laptop_unregister_notifier (struct notifier_block *nb) +{ +return blocking_notifier_chain_unregister (&ideapad_laptop_chain_head, nb); +} +EXPORT_SYMBOL_NS_GPL (ideapad_laptop_unregister_notifier,IDEAPAD_LAPTOP ); + +void ideapad_laptop_call_notifier (unsigned long action,void *data) +{ +blocking_notifier_call_chain (&ideapad_laptop_chain_head, action, data); +} +EXPORT_SYMBOL_NS_GPL (ideapad_laptop_call_notifier,IDEAPAD_LAPTOP ); +static void ideapad_acpi_notify (acpi_handle handle,u32 event,void *data) {struct ideapad_private *priv = data;
@@ -1983,6 +2016,8 @@ static int ideapad_acpi_add(struct platform_device *pdev)if (err) goto shared_init_failed; +ideapad_laptop_register_notifier (&ideapad_laptop_notifier); +return 0 ; shared_init_failed:
@@ -2015,6 +2050,8 @@ static void ideapad_acpi_remove(struct platform_device *pdev)struct ideapad_private *priv =dev_get_drvdata (&pdev->dev);int i; +ideapad_laptop_unregister_notifier (&ideapad_laptop_notifier); +ideapad_shared_exit (priv); acpi_remove_notify_handler(priv->adev->handle,
drivers/platform/x86/ideapad-laptop.h +5 -0
@@ -12,6 +12,11 @@#include <linux/acpi.h> #include <linux/jiffies.h> #include <linux/errno.h> +#include <linux/notifier.h> + +int ideapad_laptop_register_notifier (struct notifier_block *nb); +int ideapad_laptop_unregister_notifier (struct notifier_block *nb); +void ideapad_laptop_call_notifier (unsigned long action,void *data);enum {VPCCMD_R_VPC1 =0x10 ,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 18/22 platform/x86: ideapad-laptop: move ymc_trigger_ec from lenovo-ymc
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gergo Koteles <[email protected]>
[ Upstream commit cde7886b35176d56e72bfc68dc104fa08e7b072c ]
Some models need to trigger the EC after each YMC event for the yoga mode control to work properly. EC triggering consist of a VPC call from the lenovo-ymc module. Except for this, all VPC calls are in the ideapad-laptop module.
Since ideapad-laptop has a notification chain, a new YMC_EVENT action can be added and triggered from the lenovo-ymc module. Then the ideapad-laptop can trigger the EC.
If the triggering is in the ideapad-laptop module, then the ec_trigger module parameter should be there as well.
Move the ymc_trigger_ec functionality and the ec_trigger module parameter to the ideapad-laptop module.
Stable-dep-of: 7cc06e729460 ("platform/x86: ideapad-laptop: add a mutex to synchronize VPC commands")
--- drivers/platform/x86/Kconfig | 1 + drivers/platform/x86/ideapad-laptop.c | 49 ++++++++++++++++++++++ drivers/platform/x86/ideapad-laptop.h | 4 ++ drivers/platform/x86/lenovo-ymc.c | 60 +-------------------------- 4 files changed, 56 insertions(+), 58 deletions(-)
drivers/platform/x86/Kconfig +1 -0
@@ -477,6 +477,7 @@ config LENOVO_YMC tristate "Lenovo Yoga Tablet Mode Control" depends on ACPI_WMI depends on INPUT + depends on IDEAPAD_LAPTOP select INPUT_SPARSEKMAP help This driver maps the Tablet Mode Control switch to SW_TABLET_MODE input
drivers/platform/x86/ideapad-laptop.c +49 -0
77 lines not on this page · raw message
drivers/platform/x86/ideapad-laptop.h +4 -0
@@ -14,6 +14,10 @@#include <linux/errno.h> #include <linux/notifier.h> +enum ideapad_laptop_notifier_actions { +IDEAPAD_LAPTOP_YMC_EVENT , +}; +int ideapad_laptop_register_notifier (struct notifier_block *nb);int ideapad_laptop_unregister_notifier (struct notifier_block *nb);void ideapad_laptop_call_notifier (unsigned long action,void *data);
drivers/platform/x86/lenovo-ymc.c +2 -58
105 lines not on this page · raw message
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 19/22 platform/x86: ideapad-laptop: add a mutex to synchronize VPC commands
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gergo Koteles <[email protected]>
[ Upstream commit 7cc06e729460a209b84d3db4db56c9f85f048cc2 ]
Calling VPC commands consists of several VPCW and VPCR ACPI calls. These calls and their results can get mixed up if they are called simultaneously from different threads, like acpi notify handler, sysfs, debugfs, notification chain.
The commit e2ffcda16290 ("ACPI: OSL: Allow Notify () handlers to run on all CPUs") made the race issues much worse than before it but some races were possible even before that commit.
Add a mutex to synchronize VPC commands.
--- drivers/platform/x86/ideapad-laptop.c | 64 ++++++++++++++++++++------- 1 file changed, 47 insertions(+), 17 deletions(-)
drivers/platform/x86/ideapad-laptop.c +47 -17
@@ -125,6 +125,7 @@ struct ideapad_rfk_priv {struct ideapad_private {struct acpi_device *adev; +struct mutex vpc_mutex;/* protects the VPC calls */ struct rfkill *rfk[IDEAPAD_RFKILL_DEV_NUM ];struct ideapad_rfk_priv rfk_priv[IDEAPAD_RFKILL_DEV_NUM ];struct platform_device *platform_device;
@@ -304,6 +305,8 @@ static int debugfs_status_show(struct seq_file *s, void *data)struct ideapad_private *priv = s->private;unsigned long value; +guard (mutex)(&priv->vpc_mutex); +if (!read_ec_data (priv->adev->handle,VPCCMD_R_BL_MAX , &value))seq_printf (s,"Backlight max: %lu\n" , value);if (!read_ec_data (priv->adev->handle,VPCCMD_R_BL , &value))
@@ -422,7 +425,8 @@ static ssize_t camera_power_show(struct device *dev,unsigned long result;int err; - err =read_ec_data (priv->adev->handle,VPCCMD_R_CAMERA , &result); +scoped_guard (mutex, &priv->vpc_mutex) + err = read_ec_data(priv->adev->handle, VPCCMD_R_CAMERA, &result);if (err)return err;
@@ -441,7 +445,8 @@ static ssize_t camera_power_store(struct device *dev,if (err)return err; - err =write_ec_cmd (priv->adev->handle,VPCCMD_W_CAMERA , state); +scoped_guard (mutex, &priv->vpc_mutex) + err = write_ec_cmd(priv->adev->handle, VPCCMD_W_CAMERA, state);if (err)return err;
@@ -494,7 +499,8 @@ static ssize_t fan_mode_show(struct device *dev,unsigned long result;int err; - err =read_ec_data (priv->adev->handle,VPCCMD_R_FAN , &result); +scoped_guard (mutex, &priv->vpc_mutex) + err = read_ec_data(priv->adev->handle, VPCCMD_R_FAN, &result);if (err)return err;
@@ -516,7 +522,8 @@ static ssize_t fan_mode_store(struct device *dev,if (state >4 || state ==3 )return -EINVAL ; - err =write_ec_cmd (priv->adev->handle,VPCCMD_W_FAN , state); +scoped_guard (mutex, &priv->vpc_mutex) + err = write_ec_cmd(priv->adev->handle, VPCCMD_W_FAN, state);if (err)return err;
@@ -601,7 +608,8 @@ static ssize_t touchpad_show(struct device *dev,unsigned long result;int err; - err =read_ec_data (priv->adev->handle,VPCCMD_R_TOUCHPAD , &result); +scoped_guard (mutex, &priv->vpc_mutex) + err = read_ec_data(priv->adev->handle, VPCCMD_R_TOUCHPAD, &result);if (err)return err;
@@ -622,7 +630,8 @@ static ssize_t touchpad_store(struct device *dev,if (err)return err; - err =write_ec_cmd (priv->adev->handle,VPCCMD_W_TOUCHPAD , state); +scoped_guard (mutex, &priv->vpc_mutex) + err = write_ec_cmd(priv->adev->handle, VPCCMD_W_TOUCHPAD, state);if (err)return err;
@@ -1019,6 +1028,8 @@ static int ideapad_rfk_set(void *data, bool blocked)struct ideapad_rfk_priv *priv = data;int opcode = ideapad_rfk_data[priv->dev].opcode; +guard (mutex)(&priv->priv->vpc_mutex); +return write_ec_cmd (priv->priv->adev->handle, opcode, !blocked); }
@@ -1032,6 +1043,8 @@ static void ideapad_sync_rfk_state(struct ideapad_private *priv)int i;if (priv->features.hw_rfkill_switch) { +guard (mutex)(&priv->vpc_mutex); +if (read_ec_data (priv->adev->handle,VPCCMD_R_RF , &hw_blocked))return ; hw_blocked = !hw_blocked;
@@ -1205,8 +1218,9 @@ static void ideapad_input_novokey(struct ideapad_private *priv) {unsigned long long_pressed; -if (read_ec_data (priv->adev->handle,VPCCMD_R_NOVO , &long_pressed)) -return ; + scoped_guard(mutex, &priv->vpc_mutex) +if (read_ec_data (priv->adev->handle,VPCCMD_R_NOVO , &long_pressed)) +return ;if (long_pressed)ideapad_input_report (priv,17 );
@@ -1218,8 +1232,9 @@ static void ideapad_check_special_buttons(struct ideapad_private *priv) {unsigned long bit, value; -if (read_ec_data (priv->adev->handle,VPCCMD_R_SPECIAL_BUTTONS , &value)) -return ; + scoped_guard(mutex, &priv->vpc_mutex) +if (read_ec_data (priv->adev->handle,VPCCMD_R_SPECIAL_BUTTONS , &value)) +return ; for_each_set_bit (bit, &value, 16) {switch (bit) {
@@ -1252,6 +1267,8 @@ static int ideapad_backlight_get_brightness(struct backlight_device *blightdev)unsigned long now;int err; +guard (mutex)(&priv->vpc_mutex); + err =read_ec_data (priv->adev->handle,VPCCMD_R_BL , &now);if (err)return err;
@@ -1264,6 +1281,8 @@ static int ideapad_backlight_update_status(struct backlight_device *blightdev)struct ideapad_private *priv =bl_get_data (blightdev);int err; +guard (mutex)(&priv->vpc_mutex); + err =write_ec_cmd (priv->adev->handle,VPCCMD_W_BL , blightdev->props.brightness);if (err)
@@ -1341,6 +1360,8 @@ static void ideapad_backlight_notify_power(struct ideapad_private *priv)if (!blightdev)return ; +guard (mutex)(&priv->vpc_mutex); +if (read_ec_data (priv->adev->handle,VPCCMD_R_BL_POWER , &power))return ;
@@ -1353,7 +1374,8 @@ static void ideapad_backlight_notify_brightness(struct ideapad_private *priv)/* if we control brightness via acpi video driver */ if (!priv->blightdev) -read_ec_data (priv->adev->handle,VPCCMD_R_BL , &now); + scoped_guard(mutex, &priv->vpc_mutex) +read_ec_data (priv->adev->handle,VPCCMD_R_BL , &now);else backlight_force_update (priv->blightdev,BACKLIGHT_UPDATE_HOTKEY ); }
@@ -1578,7 +1600,8 @@ static void ideapad_sync_touchpad_state(struct ideapad_private *priv, bool send_int ret;/* Without reading from EC touchpad LED doesn't switch state */ - ret =read_ec_data (priv->adev->handle,VPCCMD_R_TOUCHPAD , &value); +scoped_guard (mutex, &priv->vpc_mutex) + ret = read_ec_data(priv->adev->handle, VPCCMD_R_TOUCHPAD, &value);if (ret)return ;
@@ -1638,7 +1661,8 @@ static void ideapad_laptop_trigger_ec(void)if (!priv->features.ymc_ec_trigger)return ; - ret =write_ec_cmd (priv->adev->handle,VPCCMD_W_YMC ,1 ); +scoped_guard (mutex, &priv->vpc_mutex) + ret = write_ec_cmd(priv->adev->handle, VPCCMD_W_YMC, 1);if (ret)dev_warn (&priv->platform_device->dev,"Could not write YMC: %d\n" , ret); }
@@ -1684,11 +1708,13 @@ static void ideapad_acpi_notify(acpi_handle handle, u32 event, void *data)struct ideapad_private *priv = data;unsigned long vpc1, vpc2, bit; -if (read_ec_data (handle,VPCCMD_R_VPC1 , &vpc1)) -return ; + scoped_guard(mutex, &priv->vpc_mutex) { +if (read_ec_data (handle,VPCCMD_R_VPC1 , &vpc1)) +return ; -if (read_ec_data (handle,VPCCMD_R_VPC2 , &vpc2)) -return ; +if (read_ec_data (handle,VPCCMD_R_VPC2 , &vpc2)) +return ; + } vpc1 = (vpc2 <<8 ) | vpc1;
@@ -1997,6 +2023,10 @@ static int ideapad_acpi_add(struct platform_device *pdev) priv->adev = adev; priv->platform_device = pdev; + err =devm_mutex_init (&pdev->dev, &priv->vpc_mutex); +if (err) +return err; +ideapad_check_features (priv); err =ideapad_sysfs_init (priv);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 20/22 binfmt_flat: Fix corruption when not offsetting data start
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kees Cook <[email protected]>
[ Upstream commit 3eb3cd5992f7a0c37edc8d05b4c38c98758d8671 ]
Commit 04d82a6d0881 ("binfmt_flat: allow not offsetting data start") introduced a RISC-V specific variant of the FLAT format which does not allocate any space for the (obsolete) array of shared library pointers. However, it did not disable the code which initializes the array, resulting in the corruption of sizeof(long) bytes before the DATA segment, generally the end of the TEXT segment.
Introduce MAX_SHARED_LIBS_UPDATE which depends on the state of CONFIG_BINFMT_FLAT_NO_DATA_START_OFFSET to guard the initialization of the shared library pointer region so that it will only be initialized if space is reserved for it.
--- fs/binfmt_flat.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
fs/binfmt_flat.c +3 -1
@@ -72,8 +72,10 @@#ifdef CONFIG_BINFMT_FLAT_NO_DATA_START_OFFSET #define DATA_START_OFFSET_WORDS (0) +#define MAX_SHARED_LIBS_UPDATE (0)#else #define DATA_START_OFFSET_WORDS (MAX_SHARED_LIBS) +#define MAX_SHARED_LIBS_UPDATE (MAX_SHARED_LIBS)#endif struct lib_info {
@@ -880,7 +882,7 @@ static int load_flat_binary(struct linux_binprm *bprm)return res;/* Update data segment pointers for all libraries */ -for (i =0 ; i <MAX_SHARED_LIBS ; i++) { +for (i =0 ; i <MAX_SHARED_LIBS_UPDATE ; i++) {if (!libinfo.lib_list[i].loaded)continue ;for (j =0 ; j <MAX_SHARED_LIBS ; j++) {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 21/22 drm/amd/display: Solve mst monitors blank out problem after resume
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wayne Lin <[email protected]>
commit e33697141bac18906345ea46533a240f1ad3cd21 upstream.
[Why]
In dm resume, we firstly restore dc state and do the mst resume for topology probing thereafter. If we change dpcd DP_MSTM_CTRL value after LT in mst reume, it will cause light up problem on the hub.
[How]
Revert commit 202dc359adda ("drm/amd/display: Defer handling mst up request in resume"). And adjust the reason to trigger dc_link_detect by DETECT_REASON_RESUMEFROMS3S4.
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +2 -1
@@ -2418,6 +2418,7 @@ static void resume_mst_branch_status(str ret =drm_dp_dpcd_writeb (mgr->aux,DP_MSTM_CTRL ,DP_MST_EN | +DP_UP_REQ_EN |DP_UPSTREAM_IS_SRC );if (ret <0 ) {drm_dbg_kms (mgr->dev,"mst write failed - undocked during suspend?\n" );
@@ -3017,7 +3018,7 @@ static int dm_resume(void *handle) }else {mutex_lock (&dm->dc_lock);dc_exit_ips_for_hw_access (dm->dc); -dc_link_detect (aconnector->dc_link,DETECT_REASON_HPD ); +dc_link_detect (aconnector->dc_link,DETECT_REASON_RESUMEFROMS3S4 );mutex_unlock (&dm->dc_lock); }
Greg Kroah-Hartman
maintainerPATCH 22/22 drm/amdgpu/display: Fix null pointer dereference in dc_stream_program_cursor_position
In reply to Greg Kroah-Hartman6.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Srinivasan Shanmugam <[email protected]>
commit fa4c500ce93f4f933c38e6d6388970e121e27b21 upstream.
The fix involves adding a null check for 'stream' at the beginning of the function. If 'stream' is NULL, the function immediately returns false. This ensures that 'stream' is not NULL when we dereference it to access 'ctx' in 'dc = stream->ctx->dc;' the function.
Fixes the below:
drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c:398 dc_stream_program_cursor_position()
error: we previously assumed 'stream' could be null (see line 397)
drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_stream.c
389 bool dc_stream_program_cursor_position(
390 struct dc_stream_state *stream,
391 const struct dc_cursor_position *position)
392 {
393 struct dc *dc;
394 bool reset_idle_optimizations = false;
395 const struct dc_cursor_position *old_position;
396
397 old_position = stream ? &stream->cursor_position : NULL;
^^^^^^^^The patch adds a NULL check
--> 398 dc = stream->ctx->dc;
^^^^^^^^The old code didn't check
399
400 if (dc_stream_set_cursor_position(stream, position)) {
401 dc_z10_restore(dc);
402
403 /* disable idle optimizations if enabling cursor */
404 if (dc->idle_optimizations_allowed &&
405 (!old_position->enable || dc->debug.exit_idle_opt_for_cursor_updates) &&
406 position->enable) {
407 dc_allow_idle_optimizations(dc, false);--- drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/gpu/drm/amd/display/dc/core/dc_stream.c +4 -1
@@ -394,7 +394,10 @@ bool dc_stream_program_cursor_position(bool reset_idle_optimizations = false;const struct dc_cursor_position *old_position; - old_position = stream ? &stream->cursor_position :NULL ; +if (!stream) +return false; + + old_position = &stream->cursor_position; dc = stream->ctx->dc;if (dc_stream_set_cursor_position (stream, position)) {
Works without any new errors or problems on my Setup.
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.10.6 release. There are 22 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 Sat, 17 Aug 2024 13:18:17 +0000. Anything received after that time might be too late.
arm:allmodconfig and various other allmodconfig builds:
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_mst_types.c:1581:13: error: 'is_dsc_common_config_possible' defined but not used [-Werror=unused-function]
1581 | static bool is_dsc_common_config_possible(struct dc_stream_state *stream,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_mst_types.c:1569:21: error: 'kbps_from_pbn' defined but not used [-Werror=unused-function]
1569 | static unsigned int kbps_from_pbn(unsigned int pbn)
This was introduced in v6.10.5 and is seen with CONFIG_DRM_AMD_DC_FP=n and CONFIG_DRM_AMD_DC=y. AFAICS that happens for images built with gcc on architectures which don't have kernel FPU support.
Guenter
Greg Kroah-Hartman
maintainerQuoted 14 lines · Guenter Roeck
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.10.6 release. There are 22 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 Sat, 17 Aug 2024 13:18:17 +0000. Anything received after that time might be too late.
arm:allmodconfig and various other allmodconfig builds:
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_mst_types.c:1581:13: error: 'is_dsc_common_config_possible' defined but not used [-Werror=unused-function]
1581 | static bool is_dsc_common_config_possible(structdc_stream_state*stream,
Quoted 7 lines
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_mst_types.c:1569:21: error: 'kbps_from_pbn' defined but not used [-Werror=unused-function]
1569 | static unsigned intkbps_from_pbn(unsigned int pbn)This was introduced in v6.10.5 and is seen with
CONFIG_DRM_AMD_DC_FP=nandCONFIG_DRM_AMD_DC=y. AFAICS that happens for images built with gcc on architectures which don't have kernel FPU support.
I'll push out a -rc2 that should fix this now, thanks.
greg k-h
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.10.6 release. There are 22 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 Sat, 17 Aug 2024 13:18:17 +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.10.6-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.10.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 7 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.10.6 release. There are 22 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 Sat, 17 Aug 2024 13:18:17 +0000. Anything received after that time might be too late.
Hi Greg
6.10.6-rc1 compiles, boots and runs here on x86_64 (AMD Ryzen 5 PRO 4650G, Slackware64-15.0)
Am 15.08.2024 um 15:25 schrieb Greg Kroah-Hartman:
Quoted 4 lines
This is the start of the stable review cycle for the 6.10.6 release. There are 22 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]
Hi!
Quoted 4 lines
This is the start of the stable review cycle for the 6.10.6 release. There are 22 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.10.y
6.6, 5.15, 5.4 pass our testing, too:
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/tree/linux-6.6.y
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/tree/linux-5.15.y
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/tree/linux-5.4.y
Best regards,
Pavel
Signature · 2 lines
DENX Software Engineering GmbH, Managing Director: Erika Unter HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.10.6 release. There are 22 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 Sat, 17 Aug 2024 13:18:17 +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.10.6-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.10.y
and the diffstat can be found below.thanks,
greg k-h
On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels, build tested on BMIPS_GENERIC:
Signature · 1 line
Florian
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.10.6 release. There are 22 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 Sat, 17 Aug 2024 13:18:17 +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.10.6-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.10.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.10.6-rc1
* git: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
* git commit: a812f2032d1ccdc36ece9248c14ac3ec8a936cec
* git describe: v6.10.5-23-ga812f2032d1c
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.10.y/build/v6.10.5-23-ga812f2032d1c
## Test Regressions (compared to v6.10.4-264-gb18fc76fca1a)
## Metric Regressions (compared to v6.10.4-264-gb18fc76fca1a)
## Test Fixes (compared to v6.10.4-264-gb18fc76fca1a)
## Metric Fixes (compared to v6.10.4-264-gb18fc76fca1a)
## Test result summary
total: 246703, pass: 216815, fail: 2082, skip: 27407, xfail: 399
## Build Summary
* arc: 5 total, 5 passed, 0 failed
* arm: 129 total, 127 passed, 2 failed
* arm64: 41 total, 40 passed, 1 failed
* i386: 28 total, 28 passed, 0 failed
* mips: 26 total, 24 passed, 2 failed
* parisc: 4 total, 3 passed, 1 failed
* powerpc: 36 total, 35 passed, 1 failed
* riscv: 19 total, 18 passed, 1 failed
* s390: 14 total, 12 passed, 2 failed
* sh: 10 total, 10 passed, 0 failed
* sparc: 7 total, 6 passed, 1 failed
* x86_64: 33 total, 33 passed, 0 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-filesystems
* kselftest-filesystems-binderfs
* kselftest-filesystems-epoll
* kselftest-firmware
* 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-mqueue
* kselftest-net
* kselftest-net-mptcp
* kselftest-openat2
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-seccomp
* kselftest-sigaltstack
* kselftest-size
* kselftest-tc-testing
* kselftest-timers
* kselftest-timesync-off
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user_events
* kselftest-vDSO
* kselftest-watchdog
* kselftest-x86
* kunit
* kvm-unit-tests
* libgpiod
* libhugetlbfs
* log-parser-boot
* log-parser-test
* 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-ipc
* ltp-math
* ltp-mm
* ltp-nptl
* ltp-pty
* ltp-sched
* ltp-smoke
* ltp-smoketest
* ltp-syscalls
* ltp-tracing
* perf
* rcutorture
--
Linaro LKFT
https://lkft.linaro.org
Quoted 7 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.10.6 release. There are 22 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 Sat, 17 Aug 2024 13:18:17 +0000. Anything received after that time might be too late.
Tested on a ThinkPad E14 Gen 3 with a AMD Ryzen 5 5500U CPU