In the Linux kernel, the following vulnerability has been resolved:
bpf: fix recursive lock when verdict program return SK_PASS
When the streamverdict program returns SKPASS, it places the received skb into its own receive queue, but a recursive lock eventually occurs, leading to an operating system deadlock. This issue has been present since v6.9.
''' skpsockstrpdataready writelockbh(&sk->skcallbacklock) strpdataready strpreadsock readsock -> tcpreadsock strprecv cb.rcvmsg -> skpsockstrpread # now streamverdict return SKPASS without peer sock assign _SKPASS = skpsockmapverd(SKPASS, NULL) skpsockverdictapply skpsockskbingressself skpsockskbingressenqueue skpsockdataready readlockbh(&sk->skcallbacklock) <= dead lock
'''
This topic has been discussed before, but it has not been fixed. Previous discussion: https://lore.kernel.org/all/6684a5864ec86_403d20898@john.notmuch
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/56xxx/CVE-2024-56694.json",
"cna_assigner": "Linux"
}[
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6694f7acd625ed854bf6342926e771d65dad7f69",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "net/core/skmsg.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"134306045722667955527207357750455164012",
"91831934410980966986435248677671162323",
"55231370448792961521949993574066205903",
"234149083254002698142270125569440211649",
"169961250969762815567487889520897983285",
"250330936311250429618323144363514596603"
]
},
"signature_version": "v1",
"id": "CVE-2024-56694-9120e1c4"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@221109ba2127eabd0aa64718543638b58b15df56",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "net/core/skmsg.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"207810710298880116858623454505930986673",
"150367198978842268699134260827386994065",
"322963406645353837434818015709644154704",
"155086369758027318712922044893649147433",
"134142439960108477849585754363739141980",
"250330936311250429618323144363514596603"
]
},
"signature_version": "v1",
"id": "CVE-2024-56694-fa2fdb63"
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8ca2a1eeadf09862190b2810697702d803ceef2d",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "net/core/skmsg.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"134306045722667955527207357750455164012",
"91831934410980966986435248677671162323",
"55231370448792961521949993574066205903",
"234149083254002698142270125569440211649",
"169961250969762815567487889520897983285",
"250330936311250429618323144363514596603"
]
},
"signature_version": "v1",
"id": "CVE-2024-56694-fc5318a4"
}
]
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-56694.json"