In the Linux kernel, the following vulnerability has been resolved:
scsi: ufs: core: Fix deadlock during RTC update
There is a deadlock when runtime suspend waits for the flush of RTC work, and the RTC work calls ufshcdrpmget_sync() to wait for runtime resume.
Here is deadlock backtrace:
kworker/0:1 D 4892.876354 10 10971 4859 0x4208060 0x8 10 0 120 670730152367 ptr f0ffff80c2e40000 0 1 0x00000001 0x000000ff 0x000000ff 0x000000ff <ffffffee5e71ddb0> _switchto+0x1a8/0x2d4 <ffffffee5e71e604> _schedule+0x684/0xa98 <ffffffee5e71ea60> schedule+0x48/0xc8 <ffffffee5e725f78> scheduletimeout+0x48/0x170 <ffffffee5e71fb74> dowaitforcommon+0x108/0x1b0 <ffffffee5e71efe0> waitforcompletion+0x44/0x60 <ffffffee5d6de968> _flushwork+0x39c/0x424 <ffffffee5d6decc0> _cancelworksync+0xd8/0x208 <ffffffee5d6dee2c> canceldelayedworksync+0x14/0x28 <ffffffee5e2551b8> _ufshcdwlsuspend+0x19c/0x480 <ffffffee5e255fb8> ufshcdwlruntimesuspend+0x3c/0x1d4 <ffffffee5dffd80c> scsiruntimesuspend+0x78/0xc8 <ffffffee5df93580> _rpmcallback+0x94/0x3e0 <ffffffee5df90b0c> rpmsuspend+0x2d4/0x65c <ffffffee5df91448> _pmruntimesuspend+0x80/0x114 <ffffffee5dffd95c> scsiruntimeidle+0x38/0x6c <ffffffee5df912f4> rpmidle+0x264/0x338 <ffffffee5df90f14> _pmruntimeidle+0x80/0x110 <ffffffee5e24ce44> ufshcdrtcwork+0x128/0x1e4 <ffffffee5d6e3a40> processonework+0x26c/0x650 <ffffffee5d6e65c8> workerthread+0x260/0x3d8 <ffffffee5d6edec8> kthread+0x110/0x134 <ffffffee5d616b18> retfromfork+0x10/0x20
Skip updating RTC if RPM state is not RPM_ACTIVE.
[
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2024-44953-0a7d61d9",
"digest": {
"length": 677.0,
"function_hash": "339293105360985477488169808389181871132"
},
"target": {
"function": "ufshcd_update_rtc",
"file": "drivers/ufs/core/ufshcd.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f13f1858a28c68b7fc0d72c2008d5c1f80d2e8d5",
"signature_type": "Function"
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2024-44953-0dcb2926",
"digest": {
"length": 677.0,
"function_hash": "339293105360985477488169808389181871132"
},
"target": {
"function": "ufshcd_update_rtc",
"file": "drivers/ufs/core/ufshcd.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a4921b76bc9421d3838e167f6a17ea3112d8fe62",
"signature_type": "Function"
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2024-44953-366e3729",
"digest": {
"threshold": 0.9,
"line_hashes": [
"300989097808408842958552815917378112730",
"266474654832156732698403883772515906414",
"107335327733533629486247699888814729123"
]
},
"target": {
"file": "drivers/ufs/core/ufshcd-priv.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a4921b76bc9421d3838e167f6a17ea3112d8fe62",
"signature_type": "Line"
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2024-44953-47c3a112",
"digest": {
"threshold": 0.9,
"line_hashes": [
"155563550182927250378226627272576616778",
"201329840495301664870206657064135602420",
"60100508362735645402275783374875935925",
"304674172176570420741225915764312418260"
]
},
"target": {
"file": "drivers/ufs/core/ufshcd.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f13f1858a28c68b7fc0d72c2008d5c1f80d2e8d5",
"signature_type": "Line"
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2024-44953-53f09dc8",
"digest": {
"length": 677.0,
"function_hash": "339293105360985477488169808389181871132"
},
"target": {
"function": "ufshcd_update_rtc",
"file": "drivers/ufs/core/ufshcd.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3911af778f208e5f49d43ce739332b91e26bc48e",
"signature_type": "Function"
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2024-44953-6b1fef09",
"digest": {
"threshold": 0.9,
"line_hashes": [
"300989097808408842958552815917378112730",
"266474654832156732698403883772515906414",
"107335327733533629486247699888814729123"
]
},
"target": {
"file": "drivers/ufs/core/ufshcd-priv.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f13f1858a28c68b7fc0d72c2008d5c1f80d2e8d5",
"signature_type": "Line"
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2024-44953-9a42bf47",
"digest": {
"threshold": 0.9,
"line_hashes": [
"155563550182927250378226627272576616778",
"201329840495301664870206657064135602420",
"60100508362735645402275783374875935925",
"304674172176570420741225915764312418260"
]
},
"target": {
"file": "drivers/ufs/core/ufshcd.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a4921b76bc9421d3838e167f6a17ea3112d8fe62",
"signature_type": "Line"
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2024-44953-d1cfa8d5",
"digest": {
"threshold": 0.9,
"line_hashes": [
"300989097808408842958552815917378112730",
"266474654832156732698403883772515906414",
"107335327733533629486247699888814729123"
]
},
"target": {
"file": "drivers/ufs/core/ufshcd-priv.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3911af778f208e5f49d43ce739332b91e26bc48e",
"signature_type": "Line"
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2024-44953-e66eccc0",
"digest": {
"threshold": 0.9,
"line_hashes": [
"155563550182927250378226627272576616778",
"201329840495301664870206657064135602420",
"60100508362735645402275783374875935925",
"304674172176570420741225915764312418260"
]
},
"target": {
"file": "drivers/ufs/core/ufshcd.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3911af778f208e5f49d43ce739332b91e26bc48e",
"signature_type": "Line"
}
]