CVE-2023-52813

Source
https://cve.org/CVERecord?id=CVE-2023-52813
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-52813.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2023-52813
Downstream
Related
Published
2024-05-21T15:31:21.604Z
Modified
2026-03-23T05:08:09.235094101Z
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/cve-osv-conversion/osv-output/CVE-2023-52813.json"