CVE-2022-48898
Severity CVSS v4.0:
Pending analysis
Type:
CWE-362
Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Publication date:
21/08/2024
Last modified:
11/09/2024
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
drm/msm/dp: do not complete dp_aux_cmd_fifo_tx() if irq is not for aux transfer<br />
<br />
There are 3 possible interrupt sources are handled by DP controller,<br />
HPDstatus, Controller state changes and Aux read/write transaction.<br />
At every irq, DP controller have to check isr status of every interrupt<br />
sources and service the interrupt if its isr status bits shows interrupts<br />
are pending. There is potential race condition may happen at current aux<br />
isr handler implementation since it is always complete dp_aux_cmd_fifo_tx()<br />
even irq is not for aux read or write transaction. This may cause aux read<br />
transaction return premature if host aux data read is in the middle of<br />
waiting for sink to complete transferring data to host while irq happen.<br />
This will cause host&#39;s receiving buffer contains unexpected data. This<br />
patch fixes this problem by checking aux isr and return immediately at<br />
aux isr handler if there are no any isr status bits set.<br />
<br />
Current there is a bug report regrading eDP edid corruption happen during<br />
system booting up. After lengthy debugging to found that VIDEO_READY<br />
interrupt was continuously firing during system booting up which cause<br />
dp_aux_isr() to complete dp_aux_cmd_fifo_tx() prematurely to retrieve data<br />
from aux hardware buffer which is not yet contains complete data transfer<br />
from sink. This cause edid corruption.<br />
<br />
Follows are the signature at kernel logs when problem happen,<br />
EDID has corrupt header<br />
panel-simple-dp-aux aux-aea0000.edp: Couldn&#39;t identify panel via EDID<br />
<br />
Changes in v2:<br />
-- do complete if (ret == IRQ_HANDLED) ay dp-aux_isr()<br />
-- add more commit text<br />
<br />
Changes in v3:<br />
-- add Stephen suggested<br />
-- dp_aux_isr() return IRQ_XXX back to caller<br />
-- dp_ctrl_isr() return IRQ_XXX back to caller<br />
<br />
Changes in v4:<br />
-- split into two patches<br />
<br />
Changes in v5:<br />
-- delete empty line between tags<br />
<br />
Changes in v6:<br />
-- remove extra "that" and fixed line more than 75 char at commit text<br />
<br />
Patchwork: https://patchwork.freedesktop.org/patch/516121/
Impact
Base Score 3.x
4.70
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.10 (including) | 5.10.164 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.89 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.7 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.2:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.2:rc3:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page



