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.
[ { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a4921b76bc9421d3838e167f6a17ea3112d8fe62", "signature_version": "v1", "target": { "file": "drivers/ufs/core/ufshcd.c", "function": "ufshcd_update_rtc" }, "digest": { "length": 677.0, "function_hash": "339293105360985477488169808389181871132" }, "deprecated": false, "signature_type": "Function", "id": "CVE-2024-44953-0dcb2926" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a4921b76bc9421d3838e167f6a17ea3112d8fe62", "signature_version": "v1", "target": { "file": "drivers/ufs/core/ufshcd-priv.h" }, "digest": { "threshold": 0.9, "line_hashes": [ "300989097808408842958552815917378112730", "266474654832156732698403883772515906414", "107335327733533629486247699888814729123" ] }, "deprecated": false, "signature_type": "Line", "id": "CVE-2024-44953-366e3729" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a4921b76bc9421d3838e167f6a17ea3112d8fe62", "signature_version": "v1", "target": { "file": "drivers/ufs/core/ufshcd.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "155563550182927250378226627272576616778", "201329840495301664870206657064135602420", "60100508362735645402275783374875935925", "304674172176570420741225915764312418260" ] }, "deprecated": false, "signature_type": "Line", "id": "CVE-2024-44953-9a42bf47" } ]