In the Linux kernel, the following vulnerability has been resolved:
spi: rockchip: Resolve unbalanced runtime PM / system PM handling
Commit e882575efc77 ("spi: rockchip: Suspend and resume the bus during NOIRQSYSTEMSLEEP_PM ops") stopped respecting runtime PM status and simply disabled clocks unconditionally when suspending the system. This causes problems when the device is already runtime suspended when we go to sleep -- in which case we double-disable clocks and produce a WARNing.
Switch back to pmruntimeforce_{suspend,resume}(), because that still seems like the right thing to do, and the aforementioned commit makes no explanation why it stopped using it.
Also, refactor some of the resume() error handling, because it's not actually a good idea to re-disable clocks on failure.
[
{
"digest": {
"function_hash": "208840031920251316526412101568179887799",
"length": 268.0
},
"signature_type": "Function",
"target": {
"function": "rockchip_spi_suspend",
"file": "drivers/spi/spi-rockchip.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d034bff62faea1a2219e0d2f3d17263265f24087",
"id": "CVE-2024-46846-01b80351"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"140932232837428185402867114823877991075",
"325555402939390850233910217614224335639",
"175356903668011522914758764324501648103",
"84521448818414561295890340231502852988",
"255472890139650423009885664242019551798",
"253736007556957735489978269021514418700",
"136982409999524559858504695938598526711",
"204375305968195247584891862618743084476",
"221634371909628736069985308166782609773",
"140932232837428185402867114823877991075",
"240338382288341775297419710895389048143",
"22928213405416403908077695786354121691",
"261965804475032291421285841019810817927",
"121731823241021409485788330532328178553",
"35754853505186658987129921561596354012",
"237663088234419861428327802705414575760",
"277489073488929384268637090385656396351",
"2524148587109666635014957997194457457",
"240845920093626206065775016373712834843",
"303109959132230814110666445650568922476",
"281908879227728516710506318579144142767",
"10594126528237525835798510947393107480",
"78110302686911828224821410746487278194",
"164340663572785440418038971419648460131",
"251141973412932376090290254022124807966",
"223560554903611770681731052598427812722"
]
},
"signature_type": "Line",
"target": {
"file": "drivers/spi/spi-rockchip.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0efbad8445fbba7896402500a1473450a299a08a",
"id": "CVE-2024-46846-0a61449a"
},
{
"digest": {
"function_hash": "124742266966590334873046364247473004457",
"length": 405.0
},
"signature_type": "Function",
"target": {
"function": "rockchip_spi_resume",
"file": "drivers/spi/spi-rockchip.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d034bff62faea1a2219e0d2f3d17263265f24087",
"id": "CVE-2024-46846-0c138987"
},
{
"digest": {
"function_hash": "124742266966590334873046364247473004457",
"length": 405.0
},
"signature_type": "Function",
"target": {
"function": "rockchip_spi_resume",
"file": "drivers/spi/spi-rockchip.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0efbad8445fbba7896402500a1473450a299a08a",
"id": "CVE-2024-46846-13875ba7"
},
{
"digest": {
"function_hash": "124742266966590334873046364247473004457",
"length": 405.0
},
"signature_type": "Function",
"target": {
"function": "rockchip_spi_resume",
"file": "drivers/spi/spi-rockchip.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@14f970a8d03d882b15b97beb83bd84ac8ba6298c",
"id": "CVE-2024-46846-2d826c00"
},
{
"digest": {
"function_hash": "124742266966590334873046364247473004457",
"length": 405.0
},
"signature_type": "Function",
"target": {
"function": "rockchip_spi_resume",
"file": "drivers/spi/spi-rockchip.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@be721b451affbecc4ba4eaac3b71cdbdcade1b1b",
"id": "CVE-2024-46846-2e7d0398"
},
{
"digest": {
"function_hash": "208840031920251316526412101568179887799",
"length": 268.0
},
"signature_type": "Function",
"target": {
"function": "rockchip_spi_suspend",
"file": "drivers/spi/spi-rockchip.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@be721b451affbecc4ba4eaac3b71cdbdcade1b1b",
"id": "CVE-2024-46846-82f5e3ba"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"140932232837428185402867114823877991075",
"325555402939390850233910217614224335639",
"175356903668011522914758764324501648103",
"84521448818414561295890340231502852988",
"255472890139650423009885664242019551798",
"253736007556957735489978269021514418700",
"136982409999524559858504695938598526711",
"204375305968195247584891862618743084476",
"221634371909628736069985308166782609773",
"140932232837428185402867114823877991075",
"240338382288341775297419710895389048143",
"22928213405416403908077695786354121691",
"261965804475032291421285841019810817927",
"121731823241021409485788330532328178553",
"35754853505186658987129921561596354012",
"237663088234419861428327802705414575760",
"277489073488929384268637090385656396351",
"2524148587109666635014957997194457457",
"240845920093626206065775016373712834843",
"303109959132230814110666445650568922476",
"281908879227728516710506318579144142767",
"10594126528237525835798510947393107480",
"78110302686911828224821410746487278194",
"164340663572785440418038971419648460131",
"251141973412932376090290254022124807966",
"223560554903611770681731052598427812722"
]
},
"signature_type": "Line",
"target": {
"file": "drivers/spi/spi-rockchip.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@be721b451affbecc4ba4eaac3b71cdbdcade1b1b",
"id": "CVE-2024-46846-a6d97227"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"140932232837428185402867114823877991075",
"325555402939390850233910217614224335639",
"175356903668011522914758764324501648103",
"84521448818414561295890340231502852988",
"255472890139650423009885664242019551798",
"253736007556957735489978269021514418700",
"136982409999524559858504695938598526711",
"204375305968195247584891862618743084476",
"221634371909628736069985308166782609773",
"140932232837428185402867114823877991075",
"240338382288341775297419710895389048143",
"22928213405416403908077695786354121691",
"261965804475032291421285841019810817927",
"121731823241021409485788330532328178553",
"35754853505186658987129921561596354012",
"237663088234419861428327802705414575760",
"277489073488929384268637090385656396351",
"2524148587109666635014957997194457457",
"240845920093626206065775016373712834843",
"303109959132230814110666445650568922476",
"281908879227728516710506318579144142767",
"10594126528237525835798510947393107480",
"78110302686911828224821410746487278194",
"164340663572785440418038971419648460131",
"251141973412932376090290254022124807966",
"223560554903611770681731052598427812722"
]
},
"signature_type": "Line",
"target": {
"file": "drivers/spi/spi-rockchip.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@14f970a8d03d882b15b97beb83bd84ac8ba6298c",
"id": "CVE-2024-46846-ace69dfc"
},
{
"digest": {
"function_hash": "208840031920251316526412101568179887799",
"length": 268.0
},
"signature_type": "Function",
"target": {
"function": "rockchip_spi_suspend",
"file": "drivers/spi/spi-rockchip.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0efbad8445fbba7896402500a1473450a299a08a",
"id": "CVE-2024-46846-c8a2e39d"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"140932232837428185402867114823877991075",
"325555402939390850233910217614224335639",
"175356903668011522914758764324501648103",
"84521448818414561295890340231502852988",
"255472890139650423009885664242019551798",
"253736007556957735489978269021514418700",
"136982409999524559858504695938598526711",
"204375305968195247584891862618743084476",
"221634371909628736069985308166782609773",
"140932232837428185402867114823877991075",
"240338382288341775297419710895389048143",
"22928213405416403908077695786354121691",
"261965804475032291421285841019810817927",
"121731823241021409485788330532328178553",
"35754853505186658987129921561596354012",
"237663088234419861428327802705414575760",
"277489073488929384268637090385656396351",
"2524148587109666635014957997194457457",
"240845920093626206065775016373712834843",
"303109959132230814110666445650568922476",
"281908879227728516710506318579144142767",
"10594126528237525835798510947393107480",
"78110302686911828224821410746487278194",
"164340663572785440418038971419648460131",
"251141973412932376090290254022124807966",
"223560554903611770681731052598427812722"
]
},
"signature_type": "Line",
"target": {
"file": "drivers/spi/spi-rockchip.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d034bff62faea1a2219e0d2f3d17263265f24087",
"id": "CVE-2024-46846-d7e2404d"
},
{
"digest": {
"function_hash": "208840031920251316526412101568179887799",
"length": 268.0
},
"signature_type": "Function",
"target": {
"function": "rockchip_spi_suspend",
"file": "drivers/spi/spi-rockchip.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@14f970a8d03d882b15b97beb83bd84ac8ba6298c",
"id": "CVE-2024-46846-f68aa83e"
}
]