CVE-2025-40250

Source
https://nvd.nist.gov/vuln/detail/CVE-2025-40250
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-40250.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2025-40250
Downstream
Published
2025-12-04T16:08:12.984Z
Modified
2025-12-05T12:35:02.760034Z
Summary
net/mlx5: Clean up only new IRQ glue on request_irq() failure
Details

In the Linux kernel, the following vulnerability has been resolved:

net/mlx5: Clean up only new IRQ glue on request_irq() failure

The mlx5irqalloc() function can inadvertently free the entire rmap and end up in a crash[1] when the other threads tries to access this, when request_irq() fails due to exhausted IRQ vectors. This commit modifies the cleanup to remove only the specific IRQ mapping that was just added.

This prevents removal of other valid mappings and ensures precise cleanup of the failed IRQ allocation's associated glue object.

Note: This error is observed when both fwctl and rds configs are enabled.

[1] mlx5core 0000:05:00.0: Successfully registered panic handler for port 1 mlx5core 0000:05:00.0: mlx5irqalloc:293:(pid 66740): Failed to request irq. err = -28 infiniband mlx50: mlx5ibtestwc:290:(pid 66740): Error -28 while trying to test write-combining support mlx5core 0000:05:00.0: Successfully unregistered panic handler for port 1 mlx5core 0000:06:00.0: Successfully registered panic handler for port 1 mlx5core 0000:06:00.0: mlx5irqalloc:293:(pid 66740): Failed to request irq. err = -28 infiniband mlx50: mlx5ibtestwc:290:(pid 66740): Error -28 while trying to test write-combining support mlx5core 0000:06:00.0: Successfully unregistered panic handler for port 1 mlx5core 0000:03:00.0: mlx5irqalloc:293:(pid 28895): Failed to request irq. err = -28 mlx5core 0000:05:00.0: mlx5irqalloc:293:(pid 28895): Failed to request irq. err = -28 general protection fault, probably for non-canonical address 0xe277a58fde16f291: 0000 [#1] SMP NOPTI

RIP: 0010:freeirqcpurmap+0x23/0x7d Call Trace: <TASK> ? showtraceloglvl+0x1d6/0x2f9 ? showtraceloglvl+0x1d6/0x2f9 ? mlx5irqalloc.cold+0x5d/0xf3 [mlx5core] ? diebody.cold+0x8/0xa ? dieaddr+0x39/0x53 ? excgeneralprotection+0x1c4/0x3e9 ? devvprintkemit+0x5f/0x90 ? asmexcgeneralprotection+0x22/0x27 ? freeirqcpurmap+0x23/0x7d mlx5irqalloc.cold+0x5d/0xf3 [mlx5core] irqpoolrequestvector+0x7d/0x90 [mlx5core] mlx5irqrequest+0x2e/0xe0 [mlx5core] mlx5irqrequestvector+0xad/0xf7 [mlx5core] compirqrequestpci+0x64/0xf0 [mlx5core] createcompeq+0x71/0x385 [mlx5core] ? mlx5eopenxdpsq+0x11c/0x230 [mlx5core] mlx5compeqnget+0x72/0x90 [mlx5core] ? xasload+0x8/0x91 mlx5compirqnget+0x40/0x90 [mlx5core] mlx5eopenchannel+0x7d/0x3c7 [mlx5core] mlx5eopenchannels+0xad/0x250 [mlx5core] mlx5eopenlocked+0x3e/0x110 [mlx5core] mlx5eopen+0x23/0x70 [mlx5core] _devopen+0xf1/0x1a5 _devchangeflags+0x1e1/0x249 devchangeflags+0x21/0x5c dosetlink+0x28b/0xcc4 ? _nlaparse+0x22/0x3d ? inet6validatelinkaf+0x6b/0x108 ? cpumasknext+0x1f/0x35 ? _snmp6fillstats64.constprop.0+0x66/0x107 ? _nlavalidateparse+0x48/0x1e6 _rtnlnewlink+0x5ff/0xa57 ? kmemcachealloctrace+0x164/0x2ce rtnlnewlink+0x44/0x6e rtnetlinkrcvmsg+0x2bb/0x362 ? _netlinksendskb+0x4c/0x6c ? netlinkunicast+0x28f/0x2ce ? rtnlcalcit.isra.0+0x150/0x146 netlinkrcvskb+0x5f/0x112 netlinkunicast+0x213/0x2ce netlinksendmsg+0x24f/0x4d9 _socksendmsg+0x65/0x6a syssendmsg+0x28f/0x2c9 ? importiovec+0x17/0x2b _syssendmsg+0x97/0xe0 _syssendmsg+0x81/0xd8 dosyscall64+0x35/0x87 entrySYSCALL64afterhwframe+0x6e/0x0 RIP: 0033:0x7fc328603727 Code: c3 66 90 41 54 41 89 d4 55 48 89 f5 53 89 fb 48 83 ec 10 e8 0b ed ff ff 44 89 e2 48 89 ee 89 df 41 89 c0 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 35 44 89 c7 48 89 44 24 08 e8 44 ed ff ff 48 RSP: 002b:00007ffe8eb3f1a0 EFLAGS: 00000293 ORIGRAX: 000000000000002e RAX: ffffffffffffffda RBX: 000000000000000d RCX: 00007fc328603727 RDX: 0000000000000000 RSI: 00007ffe8eb3f1f0 RDI: 000000000000000d RBP: 00007ffe8eb3f1f0 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000 R13: 00000000000 ---truncated---

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/40xxx/CVE-2025-40250.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
3354822cde5a9f72aa725b3c619188b149a71a33
Fixed
69e043bce09c9a77e5f55b9ac7505874a2a1a9f0
Fixed
6ebd02cf2dde11b86f89ea4c9f55179eab30d4ee
Fixed
4d6b4bea8b80bfa13c903ba547538249e7c5e977
Fixed
d47515af6cccd7484d8b0870376858c9848a18ec

Affected versions

v6.*

v6.10
v6.10-rc1
v6.10-rc2
v6.10-rc3
v6.10-rc4
v6.10-rc5
v6.10-rc6
v6.10-rc7
v6.11
v6.11-rc1
v6.11-rc2
v6.11-rc3
v6.11-rc4
v6.11-rc5
v6.11-rc6
v6.11-rc7
v6.12
v6.12-rc1
v6.12-rc2
v6.12-rc3
v6.12-rc4
v6.12-rc5
v6.12-rc6
v6.12-rc7
v6.12.1
v6.12.10
v6.12.11
v6.12.12
v6.12.13
v6.12.14
v6.12.15
v6.12.16
v6.12.17
v6.12.18
v6.12.19
v6.12.2
v6.12.20
v6.12.21
v6.12.22
v6.12.23
v6.12.24
v6.12.25
v6.12.26
v6.12.27
v6.12.28
v6.12.29
v6.12.3
v6.12.30
v6.12.31
v6.12.32
v6.12.33
v6.12.34
v6.12.35
v6.12.36
v6.12.37
v6.12.38
v6.12.39
v6.12.4
v6.12.40
v6.12.41
v6.12.42
v6.12.43
v6.12.44
v6.12.45
v6.12.46
v6.12.47
v6.12.48
v6.12.49
v6.12.5
v6.12.50
v6.12.51
v6.12.52
v6.12.53
v6.12.54
v6.12.55
v6.12.56
v6.12.57
v6.12.58
v6.12.59
v6.12.6
v6.12.7
v6.12.8
v6.12.9
v6.13
v6.13-rc1
v6.13-rc2
v6.13-rc3
v6.13-rc4
v6.13-rc5
v6.13-rc6
v6.13-rc7
v6.14
v6.14-rc1
v6.14-rc2
v6.14-rc3
v6.14-rc4
v6.14-rc5
v6.14-rc6
v6.14-rc7
v6.15
v6.15-rc1
v6.15-rc2
v6.15-rc3
v6.15-rc4
v6.15-rc5
v6.15-rc6
v6.15-rc7
v6.16
v6.16-rc1
v6.16-rc2
v6.16-rc3
v6.16-rc4
v6.16-rc5
v6.16-rc6
v6.16-rc7
v6.17
v6.17-rc1
v6.17-rc2
v6.17-rc3
v6.17-rc4
v6.17-rc5
v6.17-rc6
v6.17-rc7
v6.17.1
v6.17.2
v6.17.3
v6.17.4
v6.17.5
v6.17.6
v6.17.7
v6.17.8
v6.17.9
v6.18-rc1
v6.18-rc2
v6.18-rc3
v6.18-rc4
v6.18-rc5
v6.3
v6.3-rc4
v6.3-rc5
v6.3-rc6
v6.3-rc7
v6.4
v6.4-rc1
v6.4-rc2
v6.4-rc3
v6.4-rc4
v6.4-rc5
v6.4-rc6
v6.4-rc7
v6.5
v6.5-rc1
v6.5-rc2
v6.5-rc3
v6.5-rc4
v6.5-rc5
v6.5-rc6
v6.5-rc7
v6.6
v6.6-rc1
v6.6-rc2
v6.6-rc3
v6.6-rc4
v6.6-rc5
v6.6-rc6
v6.6-rc7
v6.6.1
v6.6.10
v6.6.100
v6.6.101
v6.6.102
v6.6.103
v6.6.104
v6.6.105
v6.6.106
v6.6.107
v6.6.108
v6.6.109
v6.6.11
v6.6.110
v6.6.111
v6.6.112
v6.6.113
v6.6.114
v6.6.115
v6.6.116
v6.6.117
v6.6.12
v6.6.13
v6.6.14
v6.6.15
v6.6.16
v6.6.17
v6.6.18
v6.6.19
v6.6.2
v6.6.20
v6.6.21
v6.6.22
v6.6.23
v6.6.24
v6.6.25
v6.6.26
v6.6.27
v6.6.28
v6.6.29
v6.6.3
v6.6.30
v6.6.31
v6.6.32
v6.6.33
v6.6.34
v6.6.35
v6.6.36
v6.6.37
v6.6.38
v6.6.39
v6.6.4
v6.6.40
v6.6.41
v6.6.42
v6.6.43
v6.6.44
v6.6.45
v6.6.46
v6.6.47
v6.6.48
v6.6.49
v6.6.5
v6.6.50
v6.6.51
v6.6.52
v6.6.53
v6.6.54
v6.6.55
v6.6.56
v6.6.57
v6.6.58
v6.6.59
v6.6.6
v6.6.60
v6.6.61
v6.6.62
v6.6.63
v6.6.64
v6.6.65
v6.6.66
v6.6.67
v6.6.68
v6.6.69
v6.6.7
v6.6.70
v6.6.71
v6.6.72
v6.6.73
v6.6.74
v6.6.75
v6.6.76
v6.6.77
v6.6.78
v6.6.79
v6.6.8
v6.6.80
v6.6.81
v6.6.82
v6.6.83
v6.6.84
v6.6.85
v6.6.86
v6.6.87
v6.6.88
v6.6.89
v6.6.9
v6.6.90
v6.6.91
v6.6.92
v6.6.93
v6.6.94
v6.6.95
v6.6.96
v6.6.97
v6.6.98
v6.6.99
v6.7
v6.7-rc1
v6.7-rc2
v6.7-rc3
v6.7-rc4
v6.7-rc5
v6.7-rc6
v6.7-rc7
v6.7-rc8
v6.8
v6.8-rc1
v6.8-rc2
v6.8-rc3
v6.8-rc4
v6.8-rc5
v6.8-rc6
v6.8-rc7
v6.9
v6.9-rc1
v6.9-rc2
v6.9-rc3
v6.9-rc4
v6.9-rc5
v6.9-rc6
v6.9-rc7

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.4.0
Fixed
6.6.118
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.60
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.17.10