In the Linux kernel, the following vulnerability has been resolved:
phy: tegra: xusb: Use a bitmask for UTMI pad power state tracking
The current implementation uses biaspadenable as a reference count to manage the shared bias pad for all UTMI PHYs. However, during system suspension with connected USB devices, multiple power-down requests for the UTMI pad result in a mismatch in the reference count, which in turn produces warnings such as:
[ 237.762967] WARNING: CPU: 10 PID: 1618 at tegra186utmipadpowerdown+0x160/0x170 [ 237.763103] Call trace: [ 237.763104] tegra186utmipadpowerdown+0x160/0x170 [ 237.763107] tegra186utmiphypoweroff+0x10/0x30 [ 237.763110] phypoweroff+0x48/0x100 [ 237.763113] tegraxusbenterelpg+0x204/0x500 [ 237.763119] tegraxusbsuspend+0x48/0x140 [ 237.763122] platformpmsuspend+0x2c/0xb0 [ 237.763125] dpmruncallback.isra.0+0x20/0xa0 [ 237.763127] _devicesuspend+0x118/0x330 [ 237.763129] dpmsuspend+0x10c/0x1f0 [ 237.763130] dpmsuspendstart+0x88/0xb0 [ 237.763132] suspenddevicesandenter+0x120/0x500 [ 237.763135] pmsuspend+0x1ec/0x270
The root cause was traced back to the dynamic power-down changes introduced in commit a30951d31b25 ("xhci: tegra: USB2 pad power controls"), where the UTMI pad was being powered down without verifying its current state. This unbalanced behavior led to discrepancies in the reference count.
To rectify this issue, this patch replaces the single reference counter with a bitmask, renamed to utmipadenabled. Each bit in the mask corresponds to one of the four USB2 PHYs, allowing us to track each pad's enablement status individually.
With this change: - The bias pad is powered on only when the mask is clear. - Each UTMI pad is powered on or down based on its corresponding bit in the mask, preventing redundant operations. - The overall power state of the shared bias pad is maintained correctly during suspend/resume cycles.
The mutex used to prevent race conditions during UTMI pad enable/disable operations has been moved from the tegra186utmibiaspadpoweron/off functions to the parent functions tegra186utmipadpower_on/down. This change ensures that there are no race conditions when updating the bitmask.
[
{
"digest": {
"function_hash": "3531130533867153759902854878014189866",
"length": 1675.0
},
"id": "CVE-2025-38010-0ae4a409",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_bias_pad_power_on"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1db527f0cb8f677adadd4e28e5bc77aaf5d4e4c9",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "282612943309042235489249425680364240938",
"length": 653.0
},
"id": "CVE-2025-38010-0e61d4ac",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_pad_power_on"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@628bec9ed68a2204184fc8230a2609075b08666e",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "201975707164457615458884124957183250802",
"length": 687.0
},
"id": "CVE-2025-38010-18c885fb",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_bias_pad_power_off"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ba25131b3c1ceec303839b2462586d7673788197",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "305137709016953509725829316424314877562",
"length": 500.0
},
"id": "CVE-2025-38010-2b0f3cb5",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_pad_power_down"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@628bec9ed68a2204184fc8230a2609075b08666e",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "3531130533867153759902854878014189866",
"length": 1675.0
},
"id": "CVE-2025-38010-2eed4e15",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_bias_pad_power_on"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@628bec9ed68a2204184fc8230a2609075b08666e",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "3531130533867153759902854878014189866",
"length": 1675.0
},
"id": "CVE-2025-38010-4c5407a2",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_bias_pad_power_on"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ba25131b3c1ceec303839b2462586d7673788197",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "305137709016953509725829316424314877562",
"length": 500.0
},
"id": "CVE-2025-38010-5692c488",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_pad_power_down"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1db527f0cb8f677adadd4e28e5bc77aaf5d4e4c9",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "3531130533867153759902854878014189866",
"length": 1675.0
},
"id": "CVE-2025-38010-5efcba79",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_bias_pad_power_on"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b47158fb42959c417ff2662075c0d46fb783d5d1",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "201975707164457615458884124957183250802",
"length": 687.0
},
"id": "CVE-2025-38010-72dfba7b",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_bias_pad_power_off"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b47158fb42959c417ff2662075c0d46fb783d5d1",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "305137709016953509725829316424314877562",
"length": 500.0
},
"id": "CVE-2025-38010-7e576778",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_pad_power_down"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b47158fb42959c417ff2662075c0d46fb783d5d1",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "282612943309042235489249425680364240938",
"length": 653.0
},
"id": "CVE-2025-38010-8336cd86",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_pad_power_on"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b47158fb42959c417ff2662075c0d46fb783d5d1",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "305137709016953509725829316424314877562",
"length": 500.0
},
"id": "CVE-2025-38010-97a2f760",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_pad_power_down"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ba25131b3c1ceec303839b2462586d7673788197",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "282612943309042235489249425680364240938",
"length": 653.0
},
"id": "CVE-2025-38010-a56dcdef",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_pad_power_on"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1db527f0cb8f677adadd4e28e5bc77aaf5d4e4c9",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"88454282468418921345826556141291462382",
"260178788154395891046561724478224954859",
"181302572620269451536479081014839990582",
"69071013888289406613983777867237413181",
"211883694308950706766378592479994335113",
"330616327172854005369854040373512971923",
"32655402971691291272989995030732724303",
"293675589729773900430092041471243025423",
"177947618922547737962348541337176208464",
"123119902079026617349967383354724258750",
"103169039014201799841566636744894060569",
"152202649059290785464951334821846032266",
"192046475314175277754987848741895301592",
"60929024174610906933677506032160111840",
"201255588723371147623620431137094617377",
"285943148213764685389127562189902031347",
"209977192875683236773498248684706412949",
"71319399610636514528131854935940809089",
"431014637827300994408167260136144395",
"92235491294346925112351051350937292299",
"22338254084637906054583703033340919133",
"216564805967252757531700241183934877342",
"239959586558545950524364414729897770318",
"173562496641550940925976249476928653274",
"243264353142383910866831592716585273446",
"61839138403698291214190345377819660901",
"5204271193673227066199916571837439815",
"84425696297412671313894401031227015073",
"96970484939616104745505113672745045688",
"263643438222584107916032900081573111846",
"163811352222832428303801956234596201713",
"224359623689862903820083492619332384406",
"125625819885881891336922229043348482137",
"10384183336560171527588179207073479907",
"56819018014729086716340196539133735084",
"299349024062195675330842123849756095575",
"38794091492396688681424166562253819204",
"168494527673943602462473157568185871060",
"81510222745282593584660148332438539444",
"60243356284775718268785780637304709276",
"258642583261528952693931735736729024040",
"247402425111413101818748097433913574167",
"223281658391274329372007262964628910642",
"194129827618695373052061093174515977728",
"194510057074218781779342996737362658395",
"222117908075215687255450955439366574685",
"33349928628793167197706886156367606398",
"279916932661140212924780030628544845893",
"117635244807308973342267588072821840576",
"244335037491758765621650509193922485413",
"166620016481318962990336106097145137536",
"112729426791514777508945260281312424781",
"157327810355681572924139285009152620035",
"101082189813586966881639513613368817585",
"252000270005929414880645891546719449375",
"244939149816718179714724808587330563088",
"236666203438095061454998411488453256417",
"308018860868630547635387409643266525018",
"212265102959060916322634987269016917324"
]
},
"id": "CVE-2025-38010-a868cfaf",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1db527f0cb8f677adadd4e28e5bc77aaf5d4e4c9",
"signature_version": "v1",
"signature_type": "Line",
"deprecated": false
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"88454282468418921345826556141291462382",
"260178788154395891046561724478224954859",
"181302572620269451536479081014839990582",
"69071013888289406613983777867237413181",
"211883694308950706766378592479994335113",
"330616327172854005369854040373512971923",
"32655402971691291272989995030732724303",
"293675589729773900430092041471243025423",
"177947618922547737962348541337176208464",
"123119902079026617349967383354724258750",
"103169039014201799841566636744894060569",
"152202649059290785464951334821846032266",
"192046475314175277754987848741895301592",
"60929024174610906933677506032160111840",
"201255588723371147623620431137094617377",
"285943148213764685389127562189902031347",
"209977192875683236773498248684706412949",
"71319399610636514528131854935940809089",
"431014637827300994408167260136144395",
"92235491294346925112351051350937292299",
"22338254084637906054583703033340919133",
"216564805967252757531700241183934877342",
"239959586558545950524364414729897770318",
"173562496641550940925976249476928653274",
"243264353142383910866831592716585273446",
"61839138403698291214190345377819660901",
"5204271193673227066199916571837439815",
"84425696297412671313894401031227015073",
"96970484939616104745505113672745045688",
"263643438222584107916032900081573111846",
"163811352222832428303801956234596201713",
"224359623689862903820083492619332384406",
"125625819885881891336922229043348482137",
"10384183336560171527588179207073479907",
"56819018014729086716340196539133735084",
"299349024062195675330842123849756095575",
"38794091492396688681424166562253819204",
"168494527673943602462473157568185871060",
"81510222745282593584660148332438539444",
"60243356284775718268785780637304709276",
"258642583261528952693931735736729024040",
"247402425111413101818748097433913574167",
"223281658391274329372007262964628910642",
"194129827618695373052061093174515977728",
"194510057074218781779342996737362658395",
"222117908075215687255450955439366574685",
"33349928628793167197706886156367606398",
"279916932661140212924780030628544845893",
"117635244807308973342267588072821840576",
"244335037491758765621650509193922485413",
"166620016481318962990336106097145137536",
"112729426791514777508945260281312424781",
"157327810355681572924139285009152620035",
"101082189813586966881639513613368817585",
"252000270005929414880645891546719449375",
"244939149816718179714724808587330563088",
"236666203438095061454998411488453256417",
"308018860868630547635387409643266525018",
"212265102959060916322634987269016917324"
]
},
"id": "CVE-2025-38010-c0a300ac",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ba25131b3c1ceec303839b2462586d7673788197",
"signature_version": "v1",
"signature_type": "Line",
"deprecated": false
},
{
"digest": {
"function_hash": "201975707164457615458884124957183250802",
"length": 687.0
},
"id": "CVE-2025-38010-cd887a32",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_bias_pad_power_off"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@628bec9ed68a2204184fc8230a2609075b08666e",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "201975707164457615458884124957183250802",
"length": 687.0
},
"id": "CVE-2025-38010-d3a07d73",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_bias_pad_power_off"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1db527f0cb8f677adadd4e28e5bc77aaf5d4e4c9",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"function_hash": "282612943309042235489249425680364240938",
"length": 653.0
},
"id": "CVE-2025-38010-eacf06da",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c",
"function": "tegra186_utmi_pad_power_on"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ba25131b3c1ceec303839b2462586d7673788197",
"signature_version": "v1",
"signature_type": "Function",
"deprecated": false
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"88454282468418921345826556141291462382",
"260178788154395891046561724478224954859",
"181302572620269451536479081014839990582",
"69071013888289406613983777867237413181",
"211883694308950706766378592479994335113",
"330616327172854005369854040373512971923",
"32655402971691291272989995030732724303",
"293675589729773900430092041471243025423",
"177947618922547737962348541337176208464",
"123119902079026617349967383354724258750",
"103169039014201799841566636744894060569",
"152202649059290785464951334821846032266",
"192046475314175277754987848741895301592",
"60929024174610906933677506032160111840",
"201255588723371147623620431137094617377",
"285943148213764685389127562189902031347",
"209977192875683236773498248684706412949",
"71319399610636514528131854935940809089",
"431014637827300994408167260136144395",
"92235491294346925112351051350937292299",
"22338254084637906054583703033340919133",
"216564805967252757531700241183934877342",
"239959586558545950524364414729897770318",
"173562496641550940925976249476928653274",
"243264353142383910866831592716585273446",
"61839138403698291214190345377819660901",
"5204271193673227066199916571837439815",
"84425696297412671313894401031227015073",
"96970484939616104745505113672745045688",
"263643438222584107916032900081573111846",
"163811352222832428303801956234596201713",
"224359623689862903820083492619332384406",
"125625819885881891336922229043348482137",
"10384183336560171527588179207073479907",
"56819018014729086716340196539133735084",
"299349024062195675330842123849756095575",
"38794091492396688681424166562253819204",
"168494527673943602462473157568185871060",
"81510222745282593584660148332438539444",
"60243356284775718268785780637304709276",
"258642583261528952693931735736729024040",
"247402425111413101818748097433913574167",
"223281658391274329372007262964628910642",
"194129827618695373052061093174515977728",
"194510057074218781779342996737362658395",
"222117908075215687255450955439366574685",
"33349928628793167197706886156367606398",
"279916932661140212924780030628544845893",
"117635244807308973342267588072821840576",
"244335037491758765621650509193922485413",
"166620016481318962990336106097145137536",
"112729426791514777508945260281312424781",
"157327810355681572924139285009152620035",
"101082189813586966881639513613368817585",
"252000270005929414880645891546719449375",
"244939149816718179714724808587330563088",
"236666203438095061454998411488453256417",
"308018860868630547635387409643266525018",
"212265102959060916322634987269016917324"
]
},
"id": "CVE-2025-38010-f4f7a13d",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@628bec9ed68a2204184fc8230a2609075b08666e",
"signature_version": "v1",
"signature_type": "Line",
"deprecated": false
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"88454282468418921345826556141291462382",
"260178788154395891046561724478224954859",
"181302572620269451536479081014839990582",
"69071013888289406613983777867237413181",
"211883694308950706766378592479994335113",
"330616327172854005369854040373512971923",
"32655402971691291272989995030732724303",
"293675589729773900430092041471243025423",
"177947618922547737962348541337176208464",
"123119902079026617349967383354724258750",
"103169039014201799841566636744894060569",
"152202649059290785464951334821846032266",
"192046475314175277754987848741895301592",
"60929024174610906933677506032160111840",
"201255588723371147623620431137094617377",
"285943148213764685389127562189902031347",
"209977192875683236773498248684706412949",
"71319399610636514528131854935940809089",
"431014637827300994408167260136144395",
"92235491294346925112351051350937292299",
"22338254084637906054583703033340919133",
"216564805967252757531700241183934877342",
"239959586558545950524364414729897770318",
"173562496641550940925976249476928653274",
"243264353142383910866831592716585273446",
"61839138403698291214190345377819660901",
"5204271193673227066199916571837439815",
"84425696297412671313894401031227015073",
"96970484939616104745505113672745045688",
"263643438222584107916032900081573111846",
"163811352222832428303801956234596201713",
"224359623689862903820083492619332384406",
"125625819885881891336922229043348482137",
"10384183336560171527588179207073479907",
"56819018014729086716340196539133735084",
"299349024062195675330842123849756095575",
"38794091492396688681424166562253819204",
"168494527673943602462473157568185871060",
"81510222745282593584660148332438539444",
"60243356284775718268785780637304709276",
"258642583261528952693931735736729024040",
"247402425111413101818748097433913574167",
"223281658391274329372007262964628910642",
"194129827618695373052061093174515977728",
"194510057074218781779342996737362658395",
"222117908075215687255450955439366574685",
"33349928628793167197706886156367606398",
"279916932661140212924780030628544845893",
"117635244807308973342267588072821840576",
"244335037491758765621650509193922485413",
"166620016481318962990336106097145137536",
"112729426791514777508945260281312424781",
"157327810355681572924139285009152620035",
"101082189813586966881639513613368817585",
"252000270005929414880645891546719449375",
"244939149816718179714724808587330563088",
"236666203438095061454998411488453256417",
"308018860868630547635387409643266525018",
"212265102959060916322634987269016917324"
]
},
"id": "CVE-2025-38010-fed197f0",
"target": {
"file": "drivers/phy/tegra/xusb-tegra186.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b47158fb42959c417ff2662075c0d46fb783d5d1",
"signature_version": "v1",
"signature_type": "Line",
"deprecated": false
}
]