CVE-2026-97501 in Linux信息

摘要

由 VulDB • 2026-09-25

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

pinctrl: mediatek: paris: 在设置 GPIO 方向时绕过 pinctrl GPIO 层

`pinctrl_gpio_direction_input()` / `pinctrl_gpio_direction_output()` 会获取 pinctrl 互斥锁(mutex)。这导致 gpiochip 操作需要进入睡眠状态。更糟糕的是,gpiochip 中的 `.can_sleep` 字段未设置。这会导致共享 GPIO 代理出错,因为它使用 `gpiod_cansleep()` 来检查是否可以使用自旋锁还是需要互斥锁。在这种情况下,它最终获取了自旋锁,然后调用 `pinctrl_gpio_direction_output()`,后者会获取互斥锁。这会引发严重的警告信息。

虽然此类 Mediatek 硬件没有独立的清除/设置寄存器,但 pinctrl 上下文拥有一个自旋锁,每当执行寄存器的读-改-写操作时都会获取该锁。此外,一旦 GPIO 功能被选中/复用(muxed in),后续的 GPIO 操作就不涉及 pinctrl 操作或状态了。GPIO 的方向和电平值不需要切换 pinmux 或其他任何引脚配置选项。

在 GPIO 设置方向的回调中直接调用 `mtk_pinmux_gpio_set_direction()`,以避免获取 pinctrl 互斥锁。从 `mtk_pmxops` 中删除 `.gpio_set_direction` 字段,以表明我们不再使用 pinctrl GPIO 层来设置方向。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

来源

Do you want to use VulDB in your project?

Use the official API to access entries easily!