In the Linux kernel, the following vulnerability has been resolved:
thermal: intelpowerclamp: Use getcpu() instead of smpprocessorid() to avoid crash
When CPU 0 is offline and intel_powerclamp is used to inject idle, it generates kernel BUG:
BUG: using smpprocessorid() in preemptible [00000000] code: bash/15687 caller is debugsmpprocessorid+0x17/0x20 CPU: 4 PID: 15687 Comm: bash Not tainted 5.19.0-rc7+ #57 Call Trace: <TASK> dumpstacklvl+0x49/0x63 dumpstack+0x10/0x16 checkpreemptiondisabled+0xdd/0xe0 debugsmpprocessorid+0x17/0x20 powerclampsetcurstate+0x7f/0xf9 [intel_powerclamp] ... ...
Here CPU 0 is the control CPU by default and changed to the current CPU, if CPU 0 offlined. This check has to be performed under cpusreadlock(), hence the above warning.
Use getcpu() instead of smpprocessor_id() to avoid this BUG.
[ rjw: Subject edits ]
[
{
"id": "CVE-2022-50494-02d33422",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6904727db0eb62fb0c2dce1cf331c341d97ee4b7",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "start_power_clamp",
"file": "drivers/thermal/intel_powerclamp.c"
},
"digest": {
"length": 368.0,
"function_hash": "20920780007309518724784699118766879695"
},
"signature_type": "Function"
},
{
"id": "CVE-2022-50494-0a69025f",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6e2a347b304224b2aeb1c0ea000d1cf8a02cc592",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/thermal/intel/intel_powerclamp.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"131771313902940439028873542255022701870",
"332876738285989481032311212682608434909",
"30814022356226286176462913817352003299",
"127669569150768444267583525642090629342",
"67636484828877856534448613268056760737"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50494-18a965e5",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@418fae0700e85a498062424f8656435c32cdb200",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/thermal/intel/intel_powerclamp.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"131771313902940439028873542255022701870",
"332876738285989481032311212682608434909",
"30814022356226286176462913817352003299",
"127669569150768444267583525642090629342",
"67636484828877856534448613268056760737"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50494-1e72ac87",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6e2a347b304224b2aeb1c0ea000d1cf8a02cc592",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "start_power_clamp",
"file": "drivers/thermal/intel/intel_powerclamp.c"
},
"digest": {
"length": 368.0,
"function_hash": "20920780007309518724784699118766879695"
},
"signature_type": "Function"
},
{
"id": "CVE-2022-50494-37ae31d6",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@68b99e94a4a2db6ba9b31fe0485e057b9354a640",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/thermal/intel/intel_powerclamp.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"131771313902940439028873542255022701870",
"332876738285989481032311212682608434909",
"30814022356226286176462913817352003299",
"127669569150768444267583525642090629342",
"67636484828877856534448613268056760737"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50494-41cc690b",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@513943bf879d45005213e6f5cfb7d9e9943f589f",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/thermal/intel/intel_powerclamp.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"94608967585207474965578222616323548841",
"124662208762369379470588409985764541946",
"30814022356226286176462913817352003299",
"127669569150768444267583525642090629342",
"67636484828877856534448613268056760737"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50494-4285b297",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@68b99e94a4a2db6ba9b31fe0485e057b9354a640",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "start_power_clamp",
"file": "drivers/thermal/intel/intel_powerclamp.c"
},
"digest": {
"length": 368.0,
"function_hash": "20920780007309518724784699118766879695"
},
"signature_type": "Function"
},
{
"id": "CVE-2022-50494-4305d860",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5a646c38f648185ee2c62f2a19da3c6f04e27612",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "start_power_clamp",
"file": "drivers/thermal/intel/intel_powerclamp.c"
},
"digest": {
"length": 368.0,
"function_hash": "20920780007309518724784699118766879695"
},
"signature_type": "Function"
},
{
"id": "CVE-2022-50494-60620989",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5a646c38f648185ee2c62f2a19da3c6f04e27612",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/thermal/intel/intel_powerclamp.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"94608967585207474965578222616323548841",
"124662208762369379470588409985764541946",
"30814022356226286176462913817352003299",
"127669569150768444267583525642090629342",
"67636484828877856534448613268056760737"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50494-6d4451b9",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3e799e815097febbcb81b472285be824f5d089f9",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "start_power_clamp",
"file": "drivers/thermal/intel_powerclamp.c"
},
"digest": {
"length": 617.0,
"function_hash": "62987311366428251419817811940686366500"
},
"signature_type": "Function"
},
{
"id": "CVE-2022-50494-79408558",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5614908434451aafbf9b24cb5247cf1d21269f76",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/thermal/intel/intel_powerclamp.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"131771313902940439028873542255022701870",
"332876738285989481032311212682608434909",
"30814022356226286176462913817352003299",
"127669569150768444267583525642090629342",
"67636484828877856534448613268056760737"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50494-7a21ee49",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3e799e815097febbcb81b472285be824f5d089f9",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/thermal/intel_powerclamp.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"94608967585207474965578222616323548841",
"124662208762369379470588409985764541946",
"30814022356226286176462913817352003299",
"127669569150768444267583525642090629342",
"67636484828877856534448613268056760737"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50494-7d1da510",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@418fae0700e85a498062424f8656435c32cdb200",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "start_power_clamp",
"file": "drivers/thermal/intel/intel_powerclamp.c"
},
"digest": {
"length": 368.0,
"function_hash": "20920780007309518724784699118766879695"
},
"signature_type": "Function"
},
{
"id": "CVE-2022-50494-7eea7d85",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6904727db0eb62fb0c2dce1cf331c341d97ee4b7",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/thermal/intel_powerclamp.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"94608967585207474965578222616323548841",
"124662208762369379470588409985764541946",
"30814022356226286176462913817352003299",
"127669569150768444267583525642090629342",
"67636484828877856534448613268056760737"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50494-868bccf2",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@513943bf879d45005213e6f5cfb7d9e9943f589f",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "start_power_clamp",
"file": "drivers/thermal/intel/intel_powerclamp.c"
},
"digest": {
"length": 368.0,
"function_hash": "20920780007309518724784699118766879695"
},
"signature_type": "Function"
},
{
"id": "CVE-2022-50494-91181a46",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0f91f66c568b316b19cb042cf50584467b3bdff4",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/thermal/intel_powerclamp.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"94608967585207474965578222616323548841",
"124662208762369379470588409985764541946",
"30814022356226286176462913817352003299",
"127669569150768444267583525642090629342",
"67636484828877856534448613268056760737"
]
},
"signature_type": "Line"
},
{
"id": "CVE-2022-50494-b6da9b57",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0f91f66c568b316b19cb042cf50584467b3bdff4",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "start_power_clamp",
"file": "drivers/thermal/intel_powerclamp.c"
},
"digest": {
"length": 368.0,
"function_hash": "20920780007309518724784699118766879695"
},
"signature_type": "Function"
},
{
"id": "CVE-2022-50494-c2eec876",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5614908434451aafbf9b24cb5247cf1d21269f76",
"deprecated": false,
"signature_version": "v1",
"target": {
"function": "start_power_clamp",
"file": "drivers/thermal/intel/intel_powerclamp.c"
},
"digest": {
"length": 368.0,
"function_hash": "20920780007309518724784699118766879695"
},
"signature_type": "Function"
}
]