漏洞标题
驱动程序核心:修复 dev_uevent() 中潜在的空指针引用问题
漏洞描述信息
## 漏洞概述
在Linux内核中,驱动程序核心中的`dev_uevent()`函数中存在潜在的空指针引用漏洞。如果用户空间在另一个线程将设备从其驱动程序解绑时读取"uevent"设备属性,会导致空指针引用,从而引起崩溃。
## 影响版本
该问题影响多个版本的Linux内核,具体版本未明确指出。
## 漏洞细节
当另一线程正在将设备从其驱动程序解绑时,如果用户空间读取"uevent"设备属性,此时`dev->driver`指针从有效值变为`NULL`,将导致程序崩溃。修复方法是使用`READ_ONCE()`来获取指针值,并确保在访问驱动实例时持有总线的驱动器klist锁。此外,使用`WRITE_ONCE()`设置驱动指针以防止撕裂(内存写入问题)。
## 漏洞影响
此漏洞可能导致系统崩溃或不稳定,特别是当设备从驱动程序解绑时。
CVSS信息
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
漏洞类别
空指针解引用
漏洞标题
driver core: fix potential NULL pointer dereference in dev_uevent()
漏洞描述信息
In the Linux kernel, the following vulnerability has been resolved:
driver core: fix potential NULL pointer dereference in dev_uevent()
If userspace reads "uevent" device attribute at the same time as another
threads unbinds the device from its driver, change to dev->driver from a
valid pointer to NULL may result in crash. Fix this by using READ_ONCE()
when fetching the pointer, and take bus' drivers klist lock to make sure
driver instance will not disappear while we access it.
Use WRITE_ONCE() when setting the driver pointer to ensure there is no
tearing.
CVSS信息
N/A
漏洞类别
N/A