In the Linux kernel, the following vulnerability has been resolved:
rxrpc: Fix missing locking causing hanging calls
If a call gets aborted (e.g. because kafs saw a signal) between it being queued for connection and the I/O thread picking up the call, the abort will be prioritised over the connection and it will be removed from local->newclientcalls by rxrpcdisconnectclient_call() without a lock being held. This may cause other calls on the list to disappear if a race occurs.
Fix this by taking the clientcalllock when removing a call from whatever list its ->wait_link happens to be on.
[
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@fc9de52de38f656399d2ce40f7349a6b5f86e787",
"signature_version": "v1",
"signature_type": "Line",
"id": "CVE-2024-50294-087d7a25",
"target": {
"file": "include/trace/events/rxrpc.h"
},
"digest": {
"line_hashes": [
"266483397727910131389332442769335967817",
"246010498742252334274659096533677039470",
"34272311781822402004308550940306154600",
"258083598368826894779190378317410802501"
],
"threshold": 0.9
},
"deprecated": false
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@fc9de52de38f656399d2ce40f7349a6b5f86e787",
"signature_version": "v1",
"signature_type": "Line",
"id": "CVE-2024-50294-1f3a55ab",
"target": {
"file": "net/rxrpc/conn_client.c"
},
"digest": {
"line_hashes": [
"254003071091280843672162811172582524154",
"25607347164162820156171436585301391770",
"156489522026831078881117892868458472851",
"96258700242911688281212037901361562381",
"213082621949454870515034874757623536527",
"298273750861385866141863562607955887950",
"144184818799881375989368466037961357583",
"336745029086272626664251518318238009906",
"92697801437526173929677342315241311065"
],
"threshold": 0.9
},
"deprecated": false
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@fc9de52de38f656399d2ce40f7349a6b5f86e787",
"signature_version": "v1",
"signature_type": "Function",
"id": "CVE-2024-50294-53749150",
"target": {
"function": "rxrpc_disconnect_client_call",
"file": "net/rxrpc/conn_client.c"
},
"digest": {
"length": 1768.0,
"function_hash": "25008193566655544043628410523975362924"
},
"deprecated": false
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b1fdb0bb3b6513f5bd26f92369fd6ac1a2422d8b",
"signature_version": "v1",
"signature_type": "Function",
"id": "CVE-2024-50294-5819176c",
"target": {
"function": "rxrpc_connect_client_calls",
"file": "net/rxrpc/conn_client.c"
},
"digest": {
"length": 366.0,
"function_hash": "220029003020114178335040212981520933894"
},
"deprecated": false
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b1fdb0bb3b6513f5bd26f92369fd6ac1a2422d8b",
"signature_version": "v1",
"signature_type": "Line",
"id": "CVE-2024-50294-5e39742e",
"target": {
"file": "include/trace/events/rxrpc.h"
},
"digest": {
"line_hashes": [
"266483397727910131389332442769335967817",
"246010498742252334274659096533677039470",
"34272311781822402004308550940306154600",
"258083598368826894779190378317410802501"
],
"threshold": 0.9
},
"deprecated": false
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@996a7208dadbf2cdda8d51444d5ee1fdd1ccbc92",
"signature_version": "v1",
"signature_type": "Function",
"id": "CVE-2024-50294-754b69c4",
"target": {
"function": "rxrpc_connect_client_calls",
"file": "net/rxrpc/conn_client.c"
},
"digest": {
"length": 366.0,
"function_hash": "220029003020114178335040212981520933894"
},
"deprecated": false
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@996a7208dadbf2cdda8d51444d5ee1fdd1ccbc92",
"signature_version": "v1",
"signature_type": "Line",
"id": "CVE-2024-50294-7a49a2c4",
"target": {
"file": "net/rxrpc/conn_client.c"
},
"digest": {
"line_hashes": [
"254003071091280843672162811172582524154",
"25607347164162820156171436585301391770",
"156489522026831078881117892868458472851",
"96258700242911688281212037901361562381",
"213082621949454870515034874757623536527",
"298273750861385866141863562607955887950",
"144184818799881375989368466037961357583",
"336745029086272626664251518318238009906",
"92697801437526173929677342315241311065"
],
"threshold": 0.9
},
"deprecated": false
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@fc9de52de38f656399d2ce40f7349a6b5f86e787",
"signature_version": "v1",
"signature_type": "Function",
"id": "CVE-2024-50294-7fb3bdc9",
"target": {
"function": "rxrpc_connect_client_calls",
"file": "net/rxrpc/conn_client.c"
},
"digest": {
"length": 366.0,
"function_hash": "220029003020114178335040212981520933894"
},
"deprecated": false
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@996a7208dadbf2cdda8d51444d5ee1fdd1ccbc92",
"signature_version": "v1",
"signature_type": "Function",
"id": "CVE-2024-50294-a2bd0b62",
"target": {
"function": "rxrpc_disconnect_client_call",
"file": "net/rxrpc/conn_client.c"
},
"digest": {
"length": 1781.0,
"function_hash": "138337714504589572126329050901397780667"
},
"deprecated": false
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b1fdb0bb3b6513f5bd26f92369fd6ac1a2422d8b",
"signature_version": "v1",
"signature_type": "Line",
"id": "CVE-2024-50294-a9eeb649",
"target": {
"file": "net/rxrpc/conn_client.c"
},
"digest": {
"line_hashes": [
"254003071091280843672162811172582524154",
"25607347164162820156171436585301391770",
"156489522026831078881117892868458472851",
"96258700242911688281212037901361562381",
"213082621949454870515034874757623536527",
"298273750861385866141863562607955887950",
"144184818799881375989368466037961357583",
"336745029086272626664251518318238009906",
"92697801437526173929677342315241311065"
],
"threshold": 0.9
},
"deprecated": false
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b1fdb0bb3b6513f5bd26f92369fd6ac1a2422d8b",
"signature_version": "v1",
"signature_type": "Function",
"id": "CVE-2024-50294-b68dd70c",
"target": {
"function": "rxrpc_disconnect_client_call",
"file": "net/rxrpc/conn_client.c"
},
"digest": {
"length": 1768.0,
"function_hash": "25008193566655544043628410523975362924"
},
"deprecated": false
},
{
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@996a7208dadbf2cdda8d51444d5ee1fdd1ccbc92",
"signature_version": "v1",
"signature_type": "Line",
"id": "CVE-2024-50294-ff3f56af",
"target": {
"file": "include/trace/events/rxrpc.h"
},
"digest": {
"line_hashes": [
"266483397727910131389332442769335967817",
"246010498742252334274659096533677039470",
"34272311781822402004308550940306154600",
"258083598368826894779190378317410802501"
],
"threshold": 0.9
},
"deprecated": false
}
]