rxrpc: Fix call removal to use RCU safe deletion
In the Linux kernel, the following vulnerability has been resolved: rxrpc: Fix call removal to use RCU safe deletion Fix rxrpc call removal from the rxnet->calls list to use list_del_rcu() rather than list_del_init() to prevent stuffing up reading /proc/net/rxrpc/calls from potentially getting into an infinite loop. This, however, means that list_empty() no longer works on an entry that's been deleted from the list, making it harder to detect prior deletion. Fix this by: Firstly, make rxrpc_destroy_all_calls() only dump the first ten calls that are unexpectedly still on the list. Limiting the number of steps means there's no need to call cond_resched() or to remove calls from the list here, thereby eliminating the need for rxrpc_put_call() to check for that. rxrpc_put_call() can then be fixed to unconditionally delete the call from the list as it is the only place that the deletion occurs.
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.10.258, 5.15.209, 6.1.175, 6.12.82, 6.18.23, 6.19.13, 6.6.135
- CVEs
- CVE-2026-31642
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 04:28 UTC · Revision 1
Source evidence
rxrpc: Fix call removal to use RCU safe deletion
core-osv · Original sourcePublished 24 Apr 2026, 14:44 UTC
In the Linux kernel, the following vulnerability has been resolved: rxrpc: Fix call removal to use RCU safe deletion Fix rxrpc call removal from the rxnet->calls list to use list_del_rcu() rather than list_del_init() to prevent stuffing up reading /proc/net/rxrpc/calls from potentially getting into an infinite loop. This, however, means that list_empty() no longer works on an entry that's been deleted from the list, making it harder to detect prior deletion. Fix this by: Firstly, make rxrpc_destroy_all_calls() only dump the first ten calls that are unexpectedly still on the list. Limiting the number of steps means there's no need to call cond_resched() or to remove calls from the list here, thereby eliminating the need for rxrpc_put_call() to check for that. rxrpc_put_call() can then be fixed to unconditionally delete the call from the list as it is the only place that the deletion occurs.
osv:CVE-2026-31642
Kernel
Fixed versions: 5.10.258, 5.15.209, 6.1.175, 6.6.135, 6.12.82, 6.18.23, 6.19.13
Complete source record
{
"id": "652dd9b2009eabbd7a2569975a69e94b92ff1f188a693eaedbf753508fcbe183",
"url": "https://osv.dev/vulnerability/CVE-2026-31642",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "rxrpc: Fix call removal to use RCU safe deletion",
"summary": "In the Linux kernel, the following vulnerability has been resolved: rxrpc: Fix call removal to use RCU safe deletion Fix rxrpc call removal from the rxnet->calls list to use list_del_rcu() rather than list_del_init() to prevent stuffing up reading /proc/net/rxrpc/calls from potentially getting into an infinite loop. This, however, means that list_empty() no longer works on an entry that's been deleted from the list, making it harder to detect prior deletion. Fix this by: Firstly, make rxrpc_destroy_all_calls() only dump the first ten calls that are unexpectedly still on the list. Limiting the number of steps means there's no need to call cond_resched() or to remove calls from the list here, thereby eliminating the need for rxrpc_put_call() to check for that. rxrpc_put_call() can then be fixed to unconditionally delete the call from the list as it is the only place that the deletion occurs.",
"evidence": "osv:CVE-2026-31642",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.10.258",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.209",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.175",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.135",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.82",
"evidence": "/affected/1/ranges"
},
{
"value": "6.18.23",
"evidence": "/affected/1/ranges"
},
{
"value": "6.19.13",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2026-31642",
"aliases": [
"CVE-2026-31642"
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "2baec2c3f854d1f79c7bb28386484e144e864a14"
},
{
"fixed": "3e47a38e584b905359fe0ce5be5165d1e8592a90"
},
{
"fixed": "b15b1ce96777b88989a6a4de8d01efbcd81ad2d7"
},
{
"fixed": "280efb85e9759881a9d31d0874baa04583cb6c09"
},
{
"fixed": "93fc15be44a35b8e3c58d0238ac0d9b7c53465ff"
},
{
"fixed": "c63abf25203b50243fe228090526f9dbf37727bd"
},
{
"fixed": "3be718f659683ad89fad6f1eb66bee99727cae64"
},
{
"fixed": "ac5f54691be06a32246179d41be2d73598036deb"
},
{
"fixed": "146d4ab94cf129ee06cd467cb5c71368a6b5bad6"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31642.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.13.0"
},
{
"fixed": "5.10.258"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.209"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.175"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.135"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.82"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "6.18.23"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.19.0"
},
{
"fixed": "6.19.13"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31642.json"
}
}
],
"modified": "2026-10-28T02:30:33.228733462Z",
"provider": "osv",
"references": [
"https://cert-portal.siemens.com/productcert/html/ssa-784472.html",
"https://git.kernel.org/stable/c/146d4ab94cf129ee06cd467cb5c71368a6b5bad6",
"https://git.kernel.org/stable/c/280efb85e9759881a9d31d0874baa04583cb6c09",
"https://git.kernel.org/stable/c/3be718f659683ad89fad6f1eb66bee99727cae64",
"https://git.kernel.org/stable/c/3e47a38e584b905359fe0ce5be5165d1e8592a90",
"https://git.kernel.org/stable/c/93fc15be44a35b8e3c58d0238ac0d9b7c53465ff",
"https://git.kernel.org/stable/c/ac5f54691be06a32246179d41be2d73598036deb",
"https://git.kernel.org/stable/c/b15b1ce96777b88989a6a4de8d01efbcd81ad2d7",
"https://git.kernel.org/stable/c/c63abf25203b50243fe228090526f9dbf37727bd",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31642.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-31642",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31642.json"
}
},
"related_cves": [
{
"value": "CVE-2026-31642",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 500247,
"published_at": "2026-04-24T14:44:56.888+00:00"
}