CVE-2023-52813

Source
https://cve.org/CVERecord?id=CVE-2023-52813
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-52813.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2023-52813
Downstream
Related
Published
2024-05-21T15:31:21.604Z
Modified
2026-04-11T12:46:36.578500Z
Summary
crypto: pcrypt - Fix hungtask for PADATA_RESET
Details

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

crypto: pcrypt - Fix hungtask for PADATA_RESET

We found a hungtask bug in testaeadvec_cfg as follows:

INFO: task cryptomgrtest:391009 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hungtasktimeoutsecs" disables this message. Call trace: __switch_to+0x98/0xe0 __schedule+0x6c4/0xf40 schedule+0xd8/0x1b4 scheduletimeout+0x474/0x560 waitforcommon+0x368/0x4e0 waitforcompletion+0x20/0x30 waitforcompletion+0x20/0x30 testaeadveccfg+0xab4/0xd50 testaead+0x144/0x1f0 algtestaead+0xd8/0x1e0 algtest+0x634/0x890 cryptomgrtest+0x40/0x70 kthread+0x1e0/0x220 retfromfork+0x10/0x18 Kernel panic - not syncing: hungtask: blocked tasks

For padatadoparallel, when the return err is 0 or -EBUSY, it will call waitforcompletion(&wait->completion) in testaeadveccfg. In normal case, aeadrequestcomplete() will be called in pcryptaeadserial and the return err is 0 for padatadoparallel. But, when pinst->flags is PADATARESET, the return err is -EBUSY for padatadoparallel, and it won't call aeadrequestcomplete(). Therefore, testaeadveccfg will hung at waitfor_completion(&wait->completion), which will cause hungtask.

The problem comes as following: (padatadoparallel) | rcureadlockbh(); | err = -EINVAL; | (padatareplace) | pinst->flags |= PADATARESET; err = -EBUSY | if (pinst->flags & PADATARESET) | rcureadunlock_bh() | return err

In order to resolve the problem, we replace the return err -EBUSY with -EAGAIN, which means parallel_data is changing, and the caller should call it again.

v3: remove retry and just change the return err. v2: introduce padatatrydoparallel() in pcryptaeadencrypt and pcryptaead_decrypt to solve the hungtask.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/52xxx/CVE-2023-52813.json",
    "cna_assigner": "Linux"
}
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
16295bec6398a3eedc9377e1af6ff4c71b98c300
Fixed
fb2d3a50a8f29a3c66682bb426144f40e32ab818
Fixed
039fec48e062504f14845124a1a25eb199b2ddc0
Fixed
c9c1334697301c10e6918d747ed38abfbc0c96e7
Fixed
e97bf4ada7dddacd184c3e196bd063b0dc71b41d
Fixed
546c1796ad1ed0d87dab3c4b5156d75819be2316
Fixed
c55fc098fd9d2dca475b82d00ffbcaf97879d77e
Fixed
e134f3aba98e6c801a693f540912c2d493718ddf
Fixed
372636debe852913529b1716f44addd94fff2d28
Fixed
8f4f68e788c3a7a696546291258bfa5fdb215523

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-52813.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
2.6.34
Fixed
4.14.331
Type
ECOSYSTEM
Events
Introduced
4.15.0
Fixed
4.19.300
Type
ECOSYSTEM
Events
Introduced
4.20.0
Fixed
5.4.262
Type
ECOSYSTEM
Events
Introduced
5.5.0
Fixed
5.10.202
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.140
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.64
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.5.13
Type
ECOSYSTEM
Events
Introduced
6.6.0
Fixed
6.6.3

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2023-52813.json"