In the Linux kernel, the following vulnerability has been resolved:
net: wwan: t7xx: Fix FSM command timeout issue
When driver processes the internal state change command, it use an asynchronous thread to process the command operation. If the main thread detects that the task has timed out, the asynchronous thread will panic when executing the completion notification because the main thread completion object has been released.
BUG: unable to handle page fault for address: fffffffffffffff8 PGD 1f283a067 P4D 1f283a067 PUD 1f283c067 PMD 0 Oops: 0000 [#1] PREEMPT SMP NOPTI RIP: 0010:completeall+0x3e/0xa0 [...] Call Trace: <TASK> ? _diebody+0x68/0xb0 ? pagefaultoops+0x379/0x3e0 ? excpagefault+0x69/0xa0 ? asmexcpagefault+0x22/0x30 ? completeall+0x3e/0xa0 fsmmainthread+0xa3/0x9c0 [mtkt7xx (HASH:1400 5)] ? _pfxautoremovewakefunction+0x10/0x10 kthread+0xd8/0x110 ? _pfxfsmmainthread+0x10/0x10 [mtkt7xx (HASH:1400 5)] ? _pfxkthread+0x10/0x10 retfromfork+0x38/0x50 ? _pfxkthread+0x10/0x10 retfromforkasm+0x1b/0x30 </TASK> [...] CR2: fffffffffffffff8 ---[ end trace 0000000000000000 ]---
Use the reference counter to ensure safe release as Sergey suggests: https://lore.kernel.org/all/da90f64c-260a-4329-87bf-1f9ff20a5951@gmail.com/
[
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"318878422731639434853151692169798136349",
"24928455856362085303525360273408125119",
"79871449163773765474427942812099965668",
"107060296569062919540956789937360926566",
"333584355238647517939006279223272727072",
"302510801065256098572476420807419468032",
"106885254388713394126500614898577814354",
"108208361314357370816487724782321784600",
"262340749201318448724991432847018810510",
"313988630517410424143459578287159579521",
"193452692385226515364755919293597791032",
"298567390220092232710177235369616522200",
"312203994311487295671073779343988221080",
"52739394310350730089928332684394925234",
"292290168518407527876503478810649503978",
"317411899209563368242550594975855205510",
"57373380411466560578433630122485862288",
"15457542416987362838608922459224745382",
"276788086779079869659994312248547611966",
"91605762888895292719831803010305539650",
"35288778478266262269053752812344559592",
"24448203910439646453288874996380297054",
"31003891473725904201589747367376541647",
"222162488563171107083586502219104476607",
"314427498471173219856468820027641851984",
"321193893169323206152886843831783067669",
"42702428463183016530648632324942131865",
"166172765094681368300261916952314065125",
"69365517127302277753536378448169388791"
]
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b8ab9bd0c8855cd5a6f4e0265083576257ff3fc5",
"id": "CVE-2024-39282-02a0d881",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "38625162394030045454043321179171966979",
"length": 820.0
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.c",
"function": "t7xx_fsm_append_cmd"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e6e6882a1590cbdaca77a31a02f4954327237e14",
"id": "CVE-2024-39282-032eef44",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"318878422731639434853151692169798136349",
"24928455856362085303525360273408125119",
"79871449163773765474427942812099965668",
"107060296569062919540956789937360926566",
"333584355238647517939006279223272727072",
"302510801065256098572476420807419468032",
"106885254388713394126500614898577814354",
"108208361314357370816487724782321784600",
"262340749201318448724991432847018810510",
"313988630517410424143459578287159579521",
"193452692385226515364755919293597791032",
"298567390220092232710177235369616522200",
"312203994311487295671073779343988221080",
"52739394310350730089928332684394925234",
"292290168518407527876503478810649503978",
"317411899209563368242550594975855205510",
"57373380411466560578433630122485862288",
"15457542416987362838608922459224745382",
"276788086779079869659994312248547611966",
"91605762888895292719831803010305539650",
"35288778478266262269053752812344559592",
"24448203910439646453288874996380297054",
"31003891473725904201589747367376541647",
"222162488563171107083586502219104476607",
"314427498471173219856468820027641851984",
"321193893169323206152886843831783067669",
"42702428463183016530648632324942131865",
"166172765094681368300261916952314065125",
"69365517127302277753536378448169388791"
]
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e6e6882a1590cbdaca77a31a02f4954327237e14",
"id": "CVE-2024-39282-244485a8",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"59173523958508895905560823501136119202",
"292742240816479137144736120663885735525",
"31168365849148355718853660988523145146",
"326677014587395012999263042730087367881",
"182642654669853727337536343706961758716"
]
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e6e6882a1590cbdaca77a31a02f4954327237e14",
"id": "CVE-2024-39282-39404cd7",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"59173523958508895905560823501136119202",
"292742240816479137144736120663885735525",
"31168365849148355718853660988523145146",
"326677014587395012999263042730087367881",
"182642654669853727337536343706961758716"
]
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0cd3bde081cd3452c875fa1e5c55834c670d6e05",
"id": "CVE-2024-39282-3c602b52",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "200671102411212542855087093900368562198",
"length": 208.0
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.c",
"function": "fsm_finish_command"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4f619d518db9cd1a933c3a095a5f95d0c1584ae8",
"id": "CVE-2024-39282-5db0a852",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "200671102411212542855087093900368562198",
"length": 208.0
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.c",
"function": "fsm_finish_command"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@e6e6882a1590cbdaca77a31a02f4954327237e14",
"id": "CVE-2024-39282-61b6e2d8",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "38625162394030045454043321179171966979",
"length": 820.0
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.c",
"function": "t7xx_fsm_append_cmd"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0cd3bde081cd3452c875fa1e5c55834c670d6e05",
"id": "CVE-2024-39282-642fe023",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "200671102411212542855087093900368562198",
"length": 208.0
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.c",
"function": "fsm_finish_command"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b8ab9bd0c8855cd5a6f4e0265083576257ff3fc5",
"id": "CVE-2024-39282-67ca8018",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "38625162394030045454043321179171966979",
"length": 820.0
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.c",
"function": "t7xx_fsm_append_cmd"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4f619d518db9cd1a933c3a095a5f95d0c1584ae8",
"id": "CVE-2024-39282-6e894cbc",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"318878422731639434853151692169798136349",
"24928455856362085303525360273408125119",
"79871449163773765474427942812099965668",
"107060296569062919540956789937360926566",
"333584355238647517939006279223272727072",
"302510801065256098572476420807419468032",
"106885254388713394126500614898577814354",
"108208361314357370816487724782321784600",
"262340749201318448724991432847018810510",
"313988630517410424143459578287159579521",
"193452692385226515364755919293597791032",
"298567390220092232710177235369616522200",
"312203994311487295671073779343988221080",
"52739394310350730089928332684394925234",
"292290168518407527876503478810649503978",
"317411899209563368242550594975855205510",
"57373380411466560578433630122485862288",
"15457542416987362838608922459224745382",
"276788086779079869659994312248547611966",
"91605762888895292719831803010305539650",
"35288778478266262269053752812344559592",
"24448203910439646453288874996380297054",
"31003891473725904201589747367376541647",
"222162488563171107083586502219104476607",
"314427498471173219856468820027641851984",
"321193893169323206152886843831783067669",
"42702428463183016530648632324942131865",
"166172765094681368300261916952314065125",
"69365517127302277753536378448169388791"
]
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4f619d518db9cd1a933c3a095a5f95d0c1584ae8",
"id": "CVE-2024-39282-8b5665b4",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "38625162394030045454043321179171966979",
"length": 820.0
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.c",
"function": "t7xx_fsm_append_cmd"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b8ab9bd0c8855cd5a6f4e0265083576257ff3fc5",
"id": "CVE-2024-39282-98f8d12c",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"59173523958508895905560823501136119202",
"292742240816479137144736120663885735525",
"31168365849148355718853660988523145146",
"326677014587395012999263042730087367881",
"182642654669853727337536343706961758716"
]
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4f619d518db9cd1a933c3a095a5f95d0c1584ae8",
"id": "CVE-2024-39282-b4bb943e",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "200671102411212542855087093900368562198",
"length": 208.0
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.c",
"function": "fsm_finish_command"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0cd3bde081cd3452c875fa1e5c55834c670d6e05",
"id": "CVE-2024-39282-b8b7904c",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"318878422731639434853151692169798136349",
"24928455856362085303525360273408125119",
"79871449163773765474427942812099965668",
"107060296569062919540956789937360926566",
"333584355238647517939006279223272727072",
"302510801065256098572476420807419468032",
"106885254388713394126500614898577814354",
"108208361314357370816487724782321784600",
"262340749201318448724991432847018810510",
"313988630517410424143459578287159579521",
"193452692385226515364755919293597791032",
"298567390220092232710177235369616522200",
"312203994311487295671073779343988221080",
"52739394310350730089928332684394925234",
"292290168518407527876503478810649503978",
"317411899209563368242550594975855205510",
"57373380411466560578433630122485862288",
"15457542416987362838608922459224745382",
"276788086779079869659994312248547611966",
"91605762888895292719831803010305539650",
"35288778478266262269053752812344559592",
"24448203910439646453288874996380297054",
"31003891473725904201589747367376541647",
"222162488563171107083586502219104476607",
"314427498471173219856468820027641851984",
"321193893169323206152886843831783067669",
"42702428463183016530648632324942131865",
"166172765094681368300261916952314065125",
"69365517127302277753536378448169388791"
]
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0cd3bde081cd3452c875fa1e5c55834c670d6e05",
"id": "CVE-2024-39282-cfe86a12",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"59173523958508895905560823501136119202",
"292742240816479137144736120663885735525",
"31168365849148355718853660988523145146",
"326677014587395012999263042730087367881",
"182642654669853727337536343706961758716"
]
},
"target": {
"file": "drivers/net/wwan/t7xx/t7xx_state_monitor.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b8ab9bd0c8855cd5a6f4e0265083576257ff3fc5",
"id": "CVE-2024-39282-ff5dc44e",
"deprecated": false,
"signature_version": "v1"
}
]