Linux: dma-buf: Fix silent overflow for phys vec to sgt
What fixes it
- 6b98fd7106d4e486f432664893dcd4d6fa3a9693LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
dma-buf: Fix silent overflow for phys vec to sgt
In case MMIO size is bigger than 4G and peer2peer DMA goes through host bridge, we trigger a code path that assigns the total linked IOVA (which is greater than 4G) to mapped_len.
Previously, mapped_len was declared as 32-bit unsigned int. When accumulating size_t lengths, this leads to a silent wrap-around. This truncation causes truncated lengths to be passed to functions like fill_sg_entry().
Fix this by changing mapped_len to size_t (64-bit). While at it, fix similar potential overflow issues in calc_sg_nents by using check_add_overflow() for nents and using unsigned int for the loop iterator in fill_sg_entry to match.
Text from CVE List
Affected versions 6
- Linuxaffected: 3aa31a8bb11e47c0ff2b306988d1756b810c1c3c before 6b98fd7106d4e486f432664893dcd4d6fa3a9693CVE List
- Linuxaffected: 3aa31a8bb11e47c0ff2b306988d1756b810c1c3c before b344ca94e8cc85796f16ea25e2e5a8e0303fe813CVE List
- Linuxaffected: 6.19CVE List
- Linuxunaffected: all versions before 6.19CVE List
- Linuxunaffected: 7.2.8 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List