UBUNTU-CVE-2024-40970
In the Linux kernel, the following vulnerability has been resolved: Avoid hw_desc array overrun in dw-axi-dmac I have a use case where nr_buffers = 3 and in which each descriptor is composed by 3 segments, resulting in the DMA channel descs_allocated to be 9. Since axi_desc_put() handles the hw_desc considering the descs_allocated, this scenario would result in a kernel panic (hw_desc array will be overrun). To fix this, the proposal is to add a new member to the axi_dma_desc structure, where we keep the number of allocated hw_descs (axi_desc_alloc()) and use it in axi_desc_put() to handle the hw_desc array correctly. Additionally I propose to remove the axi_chan_start_first_queued() call after completing the transfer, since it was identified that unbalance can occur (started descriptors can be interrupted and transfer ignored due to DMA channel not being enabled).
02 / AFFECTED SOFTWARE
Affected packages
11 explicit affected versions
35 explicit affected versions
49 explicit affected versions
50 explicit affected versions
6 explicit affected versions
12 explicit affected versions
19 explicit affected versions
6 explicit affected versions
58 explicit affected versions
10 explicit affected versions
44 explicit affected versions
54 explicit affected versions
44 explicit affected versions
10 explicit affected versions
3 explicit affected versions
9 explicit affected versions
51 explicit affected versions
7 explicit affected versions
50 explicit affected versions
4 explicit affected versions
13 explicit affected versions
6 explicit affected versions
35 explicit affected versions
11 explicit affected versions
16 explicit affected versions
18 explicit affected versions
12 explicit affected versions
37 explicit affected versions
9 explicit affected versions
13 explicit affected versions
4 explicit affected versions
23 explicit affected versions
13 explicit affected versions
21 explicit affected versions
16 explicit affected versions
10 explicit affected versions
11 explicit affected versions
7 explicit affected versions
12 explicit affected versions
42 explicit affected versions
12 explicit affected versions
14 explicit affected versions
7 explicit affected versions
12 explicit affected versions
12 explicit affected versions
4 explicit affected versions
11 explicit affected versions
5 explicit affected versions
37 explicit affected versions
13 explicit affected versions
2 explicit affected versions
10 explicit affected versions
31 explicit affected versions
26 explicit affected versions
13 explicit affected versions
6 explicit affected versions
29 explicit affected versions
13 explicit affected versions
55 explicit affected versions
3 explicit affected versions
4 explicit affected versions
53 explicit affected versions
15 explicit affected versions
33 explicit affected versions
23 explicit affected versions
10 explicit affected versions
1 explicit affected versions
11 explicit affected versions
12 explicit affected versions
7 explicit affected versions
12 explicit affected versions
42 explicit affected versions
36 explicit affected versions
52 explicit affected versions
10 explicit affected versions
26 explicit affected versions
11 explicit affected versions
1 explicit affected versions
3 explicit affected versions
12 explicit affected versions
13 explicit affected versions
11 explicit affected versions
16 explicit affected versions
55 explicit affected versions
12 explicit affected versions
43 explicit affected versions
3 explicit affected versions
2 explicit affected versions
51 explicit affected versions
9 explicit affected versions
12 explicit affected versions
41 explicit affected versions
27 explicit affected versions
27 explicit affected versions
5 explicit affected versions
8 explicit affected versions
16 explicit affected versions
5 explicit affected versions
8 explicit affected versions
10 explicit affected versions
8 explicit affected versions
13 explicit affected versions
13 explicit affected versions
7 explicit affected versions
46 explicit affected versions
10 explicit affected versions
13 explicit affected versions
12 explicit affected versions
44 explicit affected versions
16 explicit affected versions
3 explicit affected versions
13 explicit affected versions
26 explicit affected versions
41 explicit affected versions
37 explicit affected versions
12 explicit affected versions
14 explicit affected versions
38 explicit affected versions
44 explicit affected versions
9 explicit affected versions
44 explicit affected versions
11 explicit affected versions
4 explicit affected versions
52 explicit affected versions
7 explicit affected versions
25 explicit affected versions
4 explicit affected versions
1 explicit affected versions
1 explicit affected versions
50 explicit affected versions
13 explicit affected versions
43 explicit affected versions
10 explicit affected versions
8 explicit affected versions
7 explicit affected versions
14 explicit affected versions
4 explicit affected versions
11 explicit affected versions
1 explicit affected versions
5 explicit affected versions
03 / CONNECTIONS
Connected vulnerabilities
04 / EVIDENCE
Source records
In the Linux kernel, the following vulnerability has been resolved: Avoid hw_desc array overrun in dw-axi-dmac I have a use case where nr_buffers = 3 and in which each descriptor is composed by 3 segments, resulting in the DMA channel descs_allocated to be 9. Since axi_desc_put() handles the hw_desc considering the descs_allocated, this scenario would result in a kernel panic (hw_desc array will be overrun). To fix this, the proposal is to add a new member to the axi_dma_desc structure, where we keep the number of allocated hw_descs (axi_desc_alloc()) and use it in axi_desc_put() to handle the hw_desc array correctly. Additionally I propose to remove the axi_chan_start_first_queued() call after completing the transfer, since it was identified that unbalance can occur (started descriptors can be interrupted and transfer ignored due to DMA channel not being enabled).
05 / REFERENCES
Further evidence
- https://git.kernel.org/linus/333e11bf47fa8d477db90e2900b1ed3c9ae9b697
- https://git.kernel.org/stable/c/333e11bf47fa8d477db90e2900b1ed3c9ae9b697
- https://git.kernel.org/stable/c/7c3bb96a20cd8db3b8824b2ff08b6cde4505c7e5
- https://git.kernel.org/stable/c/9004784e8d68bcd1ac1376407ba296fa28f04dbe
- https://git.kernel.org/stable/c/dd42570018f5962c10f215ad9c21274ed5d3541e
- https://git.kernel.org/stable/c/e151ae1ee065cf4b8ce4394ddb9d9c8df6370c66
- https://ubuntu.com/security/CVE-2024-40970
- https://ubuntu.com/security/notices/USN-6999-1
- https://ubuntu.com/security/notices/USN-6999-2
- https://ubuntu.com/security/notices/USN-7004-1
- https://ubuntu.com/security/notices/USN-7005-1
- https://ubuntu.com/security/notices/USN-7005-2
- https://ubuntu.com/security/notices/USN-7007-1
- https://ubuntu.com/security/notices/USN-7007-2
- https://ubuntu.com/security/notices/USN-7007-3
- https://ubuntu.com/security/notices/USN-7008-1
- https://ubuntu.com/security/notices/USN-7009-1
- https://ubuntu.com/security/notices/USN-7009-2
- https://ubuntu.com/security/notices/USN-7019-1
- https://ubuntu.com/security/notices/USN-7029-1
- https://www.cve.org/CVERecord?id=CVE-2024-40970