Описание
In the Linux kernel, the following vulnerability has been resolved:
driver core: use READ_ONCE() for dev->driver in dev_has_sync_state()
dev_has_sync_state() reads dev->driver twice without holding
device_lock() -- once for the NULL check and once to dereference
->sync_state. Some callers only hold device_links_write_lock, which
doesn't prevent a concurrent unbind from clearing dev->driver via
device_unbind_cleanup().
Fix it by reading dev->driver exactly once with READ_ONCE(), pairing
with the WRITE_ONCE() in device_set_driver().
A flaw was found in the Linux kernel driver core. The dev_has_sync_state() function reads the dev->driver pointer multiple times without proper synchronization. This allows a concurrent unbind operation to clear the dev->driver pointer between reads. Such a race condition could lead to a null pointer dereference, potentially causing system instability or a denial of service.
Отчет
A MODERATE severity race condition was found in the Linux kernel driver core. The dev_has_sync_state() function reads the dev->driver pointer twice without holding device_lock(): once for the NULL check and once to dereference ->sync_state. Some callers hold only device_links_write_lock, which does not prevent a concurrent device unbind from clearing dev->driver via device_unbind_cleanup() between the two reads, so the second read can observe NULL, causing a NULL pointer dereference that can crash the kernel (kernel panic) and result in a denial of service. Exploiting this race requires local access with privileges sufficient to trigger a device driver unbind; the flaw affects only availability, with no impact on confidentiality or integrity. All currently tracked Red Hat products, including Red Hat Enterprise Linux and Red Hat In-Vehicle OS kernel and kernel-rt components, are marked NOT AFFECTED because the vulnerable code is not present in the shipped versions of those products. The Red Hat severity of MODERATE (CVSS 3.1 score 5.5, AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H) is lower than the upstream CVE.org rating of IMPORTANT (CVSS 3.1 score 7.8), because the upstream score assumes high confidentiality and integrity impacts, whereas this flaw only impacts availability through a kernel panic.
Меры по смягчению последствий
Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.
Затронутые пакеты
| Платформа | Пакет | Состояние | Рекомендация | Релиз |
|---|---|---|---|---|
| Red Hat Enterprise Linux 10 | kernel | Not affected | ||
| Red Hat Enterprise Linux 6 | kernel | Not affected | ||
| Red Hat Enterprise Linux 7 | kernel | Not affected | ||
| Red Hat Enterprise Linux 7 | kernel-rt | Not affected | ||
| Red Hat Enterprise Linux 8 | kernel | Not affected | ||
| Red Hat Enterprise Linux 8 | kernel-rt | Not affected | ||
| Red Hat Enterprise Linux 9 | kernel | Not affected | ||
| Red Hat Enterprise Linux 9 | kernel-rt | Not affected |
Показывать по
Дополнительная информация
Статус:
5.5 Medium
CVSS3
Связанные уязвимости
In the Linux kernel, the following vulnerability has been resolved: driver core: use READ_ONCE() for dev->driver in dev_has_sync_state() dev_has_sync_state() reads dev->driver twice without holding device_lock() -- once for the NULL check and once to dereference ->sync_state. Some callers only hold device_links_write_lock, which doesn't prevent a concurrent unbind from clearing dev->driver via device_unbind_cleanup(). Fix it by reading dev->driver exactly once with READ_ONCE(), pairing with the WRITE_ONCE() in device_set_driver().
In the Linux kernel, the following vulnerability has been resolved: driver core: use READ_ONCE() for dev->driver in dev_has_sync_state() dev_has_sync_state() reads dev->driver twice without holding device_lock() -- once for the NULL check and once to dereference ->sync_state. Some callers only hold device_links_write_lock, which doesn't prevent a concurrent unbind from clearing dev->driver via device_unbind_cleanup(). Fix it by reading dev->driver exactly once with READ_ONCE(), pairing with the WRITE_ONCE() in device_set_driver().
In the Linux kernel, the following vulnerability has been resolved: d ...
5.5 Medium
CVSS3