CVE-2023-52998

Source
https://nvd.nist.gov/vuln/detail/CVE-2023-52998
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-52998.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2023-52998
Downstream
Published
2025-03-27T16:43:31Z
Modified
2025-10-16T14:11:55.520657Z
Summary
net: fec: Use page_pool_put_full_page when freeing rx buffers
Details

In the Linux kernel, the following vulnerability has been resolved:

net: fec: Use pagepoolputfullpage when freeing rx buffers

The pagepoolreleasepage was used when freeing rx buffers, and this function just unmaps the page (if mapped) and does not recycle the page. So after hundreds of down/up the eth0, the system will out of memory. For more details, please refer to the following reproduce steps and bug logs. To solve this issue and refer to the doc of page pool, the pagepoolputfullpage should be used to replace pagepoolreleasepage. Because this API will try to recycle the page if the page refcnt equal to 1. After testing 20000 times, the issue can not be reproduced anymore (about testing 391 times the issue will occur on i.MX8MN-EVK before).

Reproduce steps: Create the test script and run the script. The script content is as follows: LOOPS=20000 i=1 while [ $i -le $LOOPS ] do echo "TINFO:ENET $curface up and down test $i times" orgmacaddr=$(cat /sys/class/net/eth0/address) ifconfig eth0 down ifconfig eth0 hw ether $orgmacaddr up i=$(expr $i + 1) done sleep 5 if cat /sys/class/net/eth0/operstate | grep 'up';then echo "TEST PASS" else echo "TEST FAIL" fi

Bug detail logs: TINFO:ENET up and down test 391 times [ 850.471205] Qualcomm Atheros AR8031/AR8033 30be0000.ethernet-1:00: attached PHY driver (miibus:phyaddr=30be0000.ethernet-1:00, irq=POLL) [ 853.535318] IPv6: ADDRCONF(NETDEVCHANGE): eth0: link becomes ready [ 853.541694] fec 30be0000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx [ 870.590531] pagepoolreleaseretry() stalled pool shutdown 199 inflight 60 sec [ 931.006557] pagepoolreleaseretry() stalled pool shutdown 199 inflight 120 sec TINFO:ENET up and down test 392 times [ 991.426544] pagepoolreleaseretry() stalled pool shutdown 192 inflight 181 sec [ 1051.838531] pagepoolreleaseretry() stalled pool shutdown 170 inflight 241 sec [ 1093.751217] Qualcomm Atheros AR8031/AR8033 30be0000.ethernet-1:00: attached PHY driver (miibus:phyaddr=30be0000.ethernet-1:00, irq=POLL) [ 1096.446520] pagepoolreleaseretry() stalled pool shutdown 308 inflight 60 sec [ 1096.831245] fec 30be0000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx [ 1096.839092] IPv6: ADDRCONF(NETDEVCHANGE): eth0: link becomes ready [ 1112.254526] pagepoolreleaseretry() stalled pool shutdown 103 inflight 302 sec [ 1156.862533] pagepoolreleaseretry() stalled pool shutdown 308 inflight 120 sec [ 1172.674516] pagepoolreleaseretry() stalled pool shutdown 103 inflight 362 sec [ 1217.278532] pagepoolreleaseretry() stalled pool shutdown 308 inflight 181 sec TINFO:ENET up and down test 393 times [ 1233.086535] pagepoolreleaseretry() stalled pool shutdown 103 inflight 422 sec [ 1277.698513] pagepoolreleaseretry() stalled pool shutdown 308 inflight 241 sec [ 1293.502525] pagepoolreleaseretry() stalled pool shutdown 86 inflight 483 sec [ 1338.110518] pagepoolreleaseretry() stalled pool shutdown 308 inflight 302 sec [ 1353.918540] pagepoolreleaseretry() stalled pool shutdown 32 inflight 543 sec [ 1361.179205] Qualcomm Atheros AR8031/AR8033 30be0000.ethernet-1:00: attached PHY driver (miibus:phyaddr=30be0000.ethernet-1:00, irq=POLL) [ 1364.255298] fec 30be0000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx [ 1364.263189] IPv6: ADDRCONF(NETDEVCHANGE): eth0: link becomes ready [ 1371.998532] pagepoolreleaseretry() stalled pool shutdown 310 inflight 60 sec [ 1398.530542] pagepoolreleaseretry() stalled pool shutdown 308 inflight 362 sec [ 1414.334539] pagepoolreleaseretry() stalled pool shutdown 16 inflight 604 sec [ 1432.414520] pagepoolreleaseretry() stalled pool shutdown 310 inflight 120 sec [ 1458.942523] pagepoolreleaseretry() stalled pool shutdown 308 inflight 422 sec [ 1474.750521] pagepoolrelease_retry() stalled pool shutdown 16 inflight 664 sec TINFO:ENET up and down test 394 times [ 1492.8305 ---truncated---

References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
95698ff6177b5f1f13f251da60e7348413046ae4
Fixed
554484a34e985a307756ee4794e60be31e3db2e5
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
95698ff6177b5f1f13f251da60e7348413046ae4
Fixed
e38553bdc377e3e7a6caa9dd9770d8b644d8dac3

Affected versions

v6.*

v6.0
v6.1
v6.1-rc1
v6.1-rc2
v6.1-rc3
v6.1-rc4
v6.1-rc5
v6.1-rc6
v6.1-rc7
v6.1-rc8
v6.1.1
v6.1.2
v6.1.3
v6.1.4
v6.1.5
v6.1.6
v6.1.7
v6.1.8
v6.2-rc1
v6.2-rc2
v6.2-rc3
v6.2-rc4

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.1.0
Fixed
6.1.9