CVE-2026-93098 in Linux信息

摘要

由 VulDB • 2026-09-19

在 Linux 内核中,已修复以下漏洞:

rpmsg: glink: 修复驱动卸载期间端点销毁时的死锁问题

在驱动卸载过程中,设备核心(device core)会在整个驱动的 remove 回调链执行期间持有设备互斥锁。当 rpmsg 端点作为该清理过程的一部分被销毁时,GLINK 端点销毁实现会尝试注销底层 rpmsg 设备。该注销操作调用 device_del(),后者试图重新获取已在栈上层持有的同一设备互斥锁,导致 rmmod 无限期挂起。

死锁表现为以下调用链:

[<0>] device_del+0x44/0x414 <- 尝试获取相同的互斥锁
[<0>] device_unregister+0x18/0x34
[<0>] rpmsg_unregister_device+0x28/0x4c
[<0>] qcom_glink_remove_rpmsg_device+0x70/0xc0
[<0>] qcom_glink_destroy_ept+0x58/0xbc
[<0>] rpmsg_dev_remove+0x50/0x60
[<0>] device_remove+0x4c/0x80
[<0>] device_release_driver_internal+0x1cc/0x228 <- 获取设备互斥锁
[<0>] driver_detach+0x4c/0x98
[<0>] bus_remove_driver+0x6c/0xbc
[<0>] driver_unregister+0x30/0x60
[<0>] unregister_rpmsg_driver+0x10/0x1c
[<0>] fastrpc_exit+0x28/0x38 [fastrpc]
[<0>] __arm64_sys_delete_module+0x1b8/0x294
[<0>] invoke_syscall+0x48/0x10c
[<0>] el0_svc_common.constprop.0+0xc0/0xe0
[<0>] do_el0_svc+0x1c/0x28
[<0>] el0_svc+0x34/0x108
[<0>] el0t_64_sync_handler+0xa0/0xe4
[<0>] el0t_64_sync+0x198/0x19c

端点销毁过程中的 rpmsg 设备注销是多余的。在触发端点销毁的两种上下文中:

- 驱动卸载路径(Driver detach path):驱动核心已经清理了 rpmsg 设备。 - 通道关闭路径(Channel close path):rpmsg 设备已在到达端点销毁之前被注销。

移除冗余的注销操作以修复死锁问题。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

来源

Do you want to use VulDB in your project?

Use the official API to access entries easily!