Linux: net: mvpp2: prevent buffer overflow in page_pool allocation
What fixes it
- 5cefdb7acfc646fbded59ae77dfe0aac4c9e4a3cLinuxCVE List
- 4ac1d5adc4f4dbafbfd270b55cc6d8bf9849d545LinuxCVE List
- 6569fd85b0ef9a8a6f20b7eb868420b8c7c0c2a0LinuxCVE List
- 1734c3fc0066e228ce1c11e434b7c2527f0a949aLinuxCVE List
- 14cb1e7702e5cb3c58888f6aed498381a73927d2LinuxCVE 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:
net: mvpp2: prevent buffer overflow in page_pool allocation
The per‑processor buffering scheme is supported only if the number of pools (nrxqs * 2) does not exceed MVPP2_BM_MAX_POOLS (8). This is already checked in mvpp2_probe() during the initial activation of percpu_pools.
However, mvpp2_change_mtu() may later call mvpp2_bm_switch_buffers(priv, true) without this check, which can lead to an out-of-bounds access in the priv->page_pool array in mvpp2_bm_init(). The array is sized to hold MVPP2_PORT_MAX_RXQ entries, and mvpp2_get_nrxqs() may return exactly that value. The per-CPU scheme then doubles it to nrxqs * 2, exceeding the array bounds.
Check that the hardware version is MVPP22 or newer and that the number of pools (nrxqs * 2) does not exceed MVPP2_BM_MAX_POOLS before switching to per-CPU mode.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Text from CVE List
Affected versions 18
- Linuxaffected: 7d04b0b13b1175ce0c4bdc77f1278c1f120f874f before 5cefdb7acfc646fbded59ae77dfe0aac4c9e4a3cCVE List
- Linuxaffected: 7d04b0b13b1175ce0c4bdc77f1278c1f120f874f before 4ac1d5adc4f4dbafbfd270b55cc6d8bf9849d545CVE List
- Linuxaffected: 7d04b0b13b1175ce0c4bdc77f1278c1f120f874f before dfd46b5584a5881b131008767950e1ab82713c8cCVE List
- Linuxaffected: 7d04b0b13b1175ce0c4bdc77f1278c1f120f874f before 6569fd85b0ef9a8a6f20b7eb868420b8c7c0c2a0CVE List
- Linuxaffected: 7d04b0b13b1175ce0c4bdc77f1278c1f120f874f before e7f30dcfa6c64033bf9137362517bd248e5be384CVE List
- Linuxaffected: 7d04b0b13b1175ce0c4bdc77f1278c1f120f874f before f0e7d62c1eb984dd204095118973c59604144cd8CVE List
- Linuxaffected: 7d04b0b13b1175ce0c4bdc77f1278c1f120f874f before 1734c3fc0066e228ce1c11e434b7c2527f0a949aCVE List
- Linuxaffected: 7d04b0b13b1175ce0c4bdc77f1278c1f120f874f before 14cb1e7702e5cb3c58888f6aed498381a73927d2CVE List
- Linuxaffected: 5.4CVE List
- Linuxunaffected: all versions before 5.4CVE List
- Linuxunaffected: 5.10.271 through 5.10.*CVE List
- Linuxunaffected: 5.15.222 through 5.15.*CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.54 through 6.18.*CVE List
- Linuxunaffected: 7.2.8 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 8
- git.kernel.org/stable/c/5cefdb7acfc646fbded59ae77dfe0aac4c9e4a3cReferencevia CVE List
- git.kernel.org/stable/c/4ac1d5adc4f4dbafbfd270b55cc6d8bf9849d545Referencevia CVE List
- git.kernel.org/stable/c/dfd46b5584a5881b131008767950e1ab82713c8cReferencevia CVE List
- git.kernel.org/stable/c/6569fd85b0ef9a8a6f20b7eb868420b8c7c0c2a0Referencevia CVE List
- git.kernel.org/stable/c/e7f30dcfa6c64033bf9137362517bd248e5be384Referencevia CVE List
- git.kernel.org/stable/c/f0e7d62c1eb984dd204095118973c59604144cd8Referencevia CVE List
- git.kernel.org/stable/c/1734c3fc0066e228ce1c11e434b7c2527f0a949aReferencevia CVE List
- git.kernel.org/stable/c/14cb1e7702e5cb3c58888f6aed498381a73927d2Referencevia CVE List