皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

最新 Linux 6.19 代码修复 Rust Binder 驱动,为 MEI 添加 Intel Nova Lake Point S

在即将发布的 Linux 6.19-rc5 版本之前,char/misc 拉取请求今天已经合并,其中包含了对 Rust Binder 驱动的显著修复,以及将 Intel Nova Lake Point S 设备 ID 添加到 MEI 驱动中。

今天的 char/misc 合并为 Rust Binder 驱动带来了修复。Google 的 Rust Binder 驱动在上游 Linux 6.18 内核中首次亮相,作为内核中用于 Android 的现有基于 C 的 Binder 驱动的替代方案。

那个 Rust Binder 驱动导致了第一个 CVE 被分配给内核的 Rust 代码。现在由于在为 Linux 6.18 主线更新 Rust Binder 驱动时发生了一个失误,又需要对 Rust Binder 驱动进行修复。

谷歌的 Alice Ryhl 在上个月的补丁中解释道:

“在将 Rust Binder 前移到 6.18 时,我忽略了提交 fb56fdf8b9a2(”mm/list_lru: 将锁拆分为每个 cgroup 范围”),而且显然在提交前我对驱动进行合理性测试时没有运行收缩器回调。这会导致如下崩溃:

============================================
WARNING: 可能检测到递归锁定
6.18.0-mainline-maybe-dirty #1 Tainted: G IO
6.18.0-mainline-maybe-dirty #1 污染:G IO

——————————————–
kswapd0/68 正在尝试获取锁:
ffff956000fa18b0 (&l->lock){+.+.}-{2:2}, at: lock_list_lru_of_memcg+0x128/0x230
ffff956000fa18b0 (&l->lock){+.+.}-{2:2}, 在:lock_list_lru_of_memcg+0x128/0x230

但任务已经持有锁:
ffff956000fa18b0 (&l->lock){+.+.}-{2:2}, at: rust_helper_spin_lock+0xd/0x20

其他可能有助于我们调试的信息:
可能的不安全锁定场景:

CPU0
—-
lock(&l->lock);

*** DEADLOCK ***

可能是由于缺少锁嵌套符号

3 个锁由 kswapd0/68 持有:
#0: ffffffff90d2e260 (fs_reclaim){+.+.}-{0:0}, at: kswapd+0x597/0x1160
#1: ffff956000fa18b0 (&l->lock){+.+.}-{2:2}, at: rust_helper_spin_lock+0xd/0x20
#2: ffffffff90cf3680 (rcu_read_lock){….}-{1:2}, at: lock_list_lru_of_memcg+0x2d/0x230

为修复这个问题,从 rust_shrink_free_page()中移除 spin_lock()调用。”

删除一行(不安全的)Rust 代码可以避免这次崩溃。该补丁已合并到 Linux 6.19-rc5 中,并且也标记为回退到稳定的 Linux 6.19 内核。

最新 Linux 6.19 代码修复 Rust Binder 驱动,为 MEI 添加 Intel Nova Lake Point S

今天字符设备/杂项模块拉取更新中的另一项值得注意的内容是为 Intel 管理引擎接口”MEI”驱动添加 Nova Lake S 支持。由于只需要一个新的设备 ID 且无需其他驱动更改,因此对于 Linux 6.19 周期的这个后期阶段来说是合适的,因为它不会导致现有硬件支持回归。

转自  Latest Linux 6.19 Code Fixes Rust Binder Driver, Adds Intel Nova Lake Point S To MEI – Phoronix