In the Linux kernel, the following vulnerability has been resolved:
ALSA: us122l: Use sndcardfreewhenclosed() at disconnection
The USB disconnect callback is supposed to be short and not too-long waiting. OTOH, the current code uses sndcardfree() at disconnection, but this waits for the close of all used fds, hence it can take long. It eventually blocks the upper layer USB ioctls, which may trigger a soft lockup.
An easy workaround is to replace sndcardfree() with sndcardfreewhenclosed(). This variant returns immediately while the release of resources is done asynchronously by the card device release at the last close.
The loop of us122l->mmapcount check is dropped as well. The check is useless for the asynchronous operation with *when_closed().
[
{
"id": "CVE-2024-56532-0685ab0b",
"target": {
"file": "sound/usb/usx2y/us122l.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"325511035592531161193722462021702042007",
"139499547257583150614284681455490994205",
"158345907817783040777941088656951200284",
"22360137898660889926965970740370353260",
"249774596605300786942273716687714400121",
"130398456723531263409303804893592402324"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bf0aa35a7cb8602cccf2387712114e836f65c154",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-0bd51722",
"target": {
"file": "sound/usb/usx2y/us122l.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"325511035592531161193722462021702042007",
"139499547257583150614284681455490994205",
"158345907817783040777941088656951200284",
"22360137898660889926965970740370353260",
"249774596605300786942273716687714400121",
"130398456723531263409303804893592402324"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9d5c530e4d70f64b1114f2cc29ac690ba7ac4a38",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-1906e76c",
"target": {
"file": "sound/usb/usx2y/us122l.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"325511035592531161193722462021702042007",
"139499547257583150614284681455490994205",
"158345907817783040777941088656951200284",
"22360137898660889926965970740370353260",
"249774596605300786942273716687714400121",
"130398456723531263409303804893592402324"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2938dd2648522336133c151dd67bb9bf01cbd390",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-19f575ec",
"target": {
"file": "sound/usb/usx2y/us122l.c",
"function": "snd_us122l_disconnect"
},
"digest": {
"function_hash": "304016301568057638543404621705867844940",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b7df09bb348016943f56b09dcaafe221e3f73947",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-264c6429",
"target": {
"file": "sound/usb/usx2y/us122l.c",
"function": "snd_us122l_disconnect"
},
"digest": {
"function_hash": "304016301568057638543404621705867844940",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2938dd2648522336133c151dd67bb9bf01cbd390",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-2e64aab9",
"target": {
"file": "sound/usb/usx2y/us122l.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"325511035592531161193722462021702042007",
"139499547257583150614284681455490994205",
"158345907817783040777941088656951200284",
"22360137898660889926965970740370353260",
"249774596605300786942273716687714400121",
"130398456723531263409303804893592402324"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a48bd2184b142c92a4e17eac074c61fcf975bc9",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-2ea9b011",
"target": {
"file": "sound/usb/usx2y/us122l.c",
"function": "snd_us122l_disconnect"
},
"digest": {
"function_hash": "304016301568057638543404621705867844940",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@020cbc4d7414f0962004213e2b7bc5cc607e9ec7",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-34510433",
"target": {
"file": "sound/usb/usx2y/us122l.c",
"function": "snd_us122l_disconnect"
},
"digest": {
"function_hash": "304016301568057638543404621705867844940",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bf0aa35a7cb8602cccf2387712114e836f65c154",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-455ee1e8",
"target": {
"file": "sound/usb/usx2y/us122l.c",
"function": "snd_us122l_disconnect"
},
"digest": {
"function_hash": "304016301568057638543404621705867844940",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9d5c530e4d70f64b1114f2cc29ac690ba7ac4a38",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-50b7d79e",
"target": {
"file": "sound/usb/usx2y/us122l.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"325511035592531161193722462021702042007",
"139499547257583150614284681455490994205",
"158345907817783040777941088656951200284",
"22360137898660889926965970740370353260",
"249774596605300786942273716687714400121",
"130398456723531263409303804893592402324"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9b27924dc8d7f8a8c35e521287d4ccb9a006e597",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-5d213430",
"target": {
"file": "sound/usb/usx2y/us122l.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"325511035592531161193722462021702042007",
"139499547257583150614284681455490994205",
"158345907817783040777941088656951200284",
"22360137898660889926965970740370353260",
"249774596605300786942273716687714400121",
"130398456723531263409303804893592402324"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@75f418b249d84021865eaa59515d3ed9b75ce4d6",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-5e1b2188",
"target": {
"file": "sound/usb/usx2y/us122l.c",
"function": "snd_us122l_disconnect"
},
"digest": {
"function_hash": "304016301568057638543404621705867844940",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bc778ad3e495333eebda36fe91d5b2c93109cc16",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-7fd550bb",
"target": {
"file": "sound/usb/usx2y/us122l.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"325511035592531161193722462021702042007",
"139499547257583150614284681455490994205",
"158345907817783040777941088656951200284",
"22360137898660889926965970740370353260",
"249774596605300786942273716687714400121",
"130398456723531263409303804893592402324"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b7df09bb348016943f56b09dcaafe221e3f73947",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-9e8ba9ef",
"target": {
"file": "sound/usb/usx2y/us122l.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"325511035592531161193722462021702042007",
"139499547257583150614284681455490994205",
"158345907817783040777941088656951200284",
"22360137898660889926965970740370353260",
"249774596605300786942273716687714400121",
"130398456723531263409303804893592402324"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bc778ad3e495333eebda36fe91d5b2c93109cc16",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-a81b7c47",
"target": {
"file": "sound/usb/usx2y/us122l.c",
"function": "snd_us122l_disconnect"
},
"digest": {
"function_hash": "304016301568057638543404621705867844940",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@75f418b249d84021865eaa59515d3ed9b75ce4d6",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-aa5abd4e",
"target": {
"file": "sound/usb/usx2y/us122l.c",
"function": "snd_us122l_disconnect"
},
"digest": {
"function_hash": "304016301568057638543404621705867844940",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9b27924dc8d7f8a8c35e521287d4ccb9a006e597",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-ad1f4b21",
"target": {
"file": "sound/usb/usx2y/us122l.c",
"function": "snd_us122l_disconnect"
},
"digest": {
"function_hash": "304016301568057638543404621705867844940",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a48bd2184b142c92a4e17eac074c61fcf975bc9",
"signature_version": "v1"
},
{
"id": "CVE-2024-56532-f6219f52",
"target": {
"file": "sound/usb/usx2y/us122l.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"325511035592531161193722462021702042007",
"139499547257583150614284681455490994205",
"158345907817783040777941088656951200284",
"22360137898660889926965970740370353260",
"249774596605300786942273716687714400121",
"130398456723531263409303804893592402324"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@020cbc4d7414f0962004213e2b7bc5cc607e9ec7",
"signature_version": "v1"
}
]