Vulnerability Details CVE-2021-46959
In the Linux kernel, the following vulnerability has been resolved:
spi: Fix use-after-free with devm_spi_alloc_*
We can't rely on the contents of the devres list during
spi_unregister_controller(), as the list is already torn down at the
time we perform devres_find() for devm_spi_release_controller. This
causes devices registered with devm_spi_alloc_{master,slave}() to be
mistakenly identified as legacy, non-devm managed devices and have their
reference counters decremented below 0.
------------[ cut here ]------------
WARNING: CPU: 1 PID: 660 at lib/refcount.c:28 refcount_warn_saturate+0x108/0x174
[<b0396f04>] (refcount_warn_saturate) from [<b03c56a4>] (kobject_put+0x90/0x98)
[<b03c5614>] (kobject_put) from [<b0447b4c>] (put_device+0x20/0x24)
r4:b6700140
[<b0447b2c>] (put_device) from [<b07515e8>] (devm_spi_release_controller+0x3c/0x40)
[<b07515ac>] (devm_spi_release_controller) from [<b045343c>] (release_nodes+0x84/0xc4)
r5:b6700180 r4:b6700100
[<b04533b8>] (release_nodes) from [<b0454160>] (devres_release_all+0x5c/0x60)
r8:b1638c54 r7:b117ad94 r6:b1638c10 r5:b117ad94 r4:b163dc10
[<b0454104>] (devres_release_all) from [<b044e41c>] (__device_release_driver+0x144/0x1ec)
r5:b117ad94 r4:b163dc10
[<b044e2d8>] (__device_release_driver) from [<b044f70c>] (device_driver_detach+0x84/0xa0)
r9:00000000 r8:00000000 r7:b117ad94 r6:b163dc54 r5:b1638c10 r4:b163dc10
[<b044f688>] (device_driver_detach) from [<b044d274>] (unbind_store+0xe4/0xf8)
Instead, determine the devm allocation state as a flag on the
controller which is guaranteed to be stable during cleanup.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.0
EPSS Ranking 1.1%
CVSS Severity
CVSS v3 Score 7.8
Products affected by CVE-2021-46959
-
cpe:2.3:o:linux:linux_kernel:4.14.212
-
cpe:2.3:o:linux:linux_kernel:4.14.213
-
cpe:2.3:o:linux:linux_kernel:4.14.214
-
cpe:2.3:o:linux:linux_kernel:4.14.215
-
cpe:2.3:o:linux:linux_kernel:4.14.216
-
cpe:2.3:o:linux:linux_kernel:4.14.217
-
cpe:2.3:o:linux:linux_kernel:4.14.218
-
cpe:2.3:o:linux:linux_kernel:4.14.219
-
cpe:2.3:o:linux:linux_kernel:4.14.220
-
cpe:2.3:o:linux:linux_kernel:4.14.221
-
cpe:2.3:o:linux:linux_kernel:4.14.222
-
cpe:2.3:o:linux:linux_kernel:4.14.223
-
cpe:2.3:o:linux:linux_kernel:4.14.224
-
cpe:2.3:o:linux:linux_kernel:4.14.225
-
cpe:2.3:o:linux:linux_kernel:4.14.226
-
cpe:2.3:o:linux:linux_kernel:4.14.227
-
cpe:2.3:o:linux:linux_kernel:4.14.228
-
cpe:2.3:o:linux:linux_kernel:4.14.229
-
cpe:2.3:o:linux:linux_kernel:4.14.230
-
cpe:2.3:o:linux:linux_kernel:4.14.231
-
cpe:2.3:o:linux:linux_kernel:4.14.232
-
cpe:2.3:o:linux:linux_kernel:4.19.163
-
cpe:2.3:o:linux:linux_kernel:4.19.164
-
cpe:2.3:o:linux:linux_kernel:4.19.165
-
cpe:2.3:o:linux:linux_kernel:4.19.166
-
cpe:2.3:o:linux:linux_kernel:4.19.167
-
cpe:2.3:o:linux:linux_kernel:4.19.168
-
cpe:2.3:o:linux:linux_kernel:4.19.169
-
cpe:2.3:o:linux:linux_kernel:4.19.170
-
cpe:2.3:o:linux:linux_kernel:4.19.171
-
cpe:2.3:o:linux:linux_kernel:4.19.172
-
cpe:2.3:o:linux:linux_kernel:4.19.173
-
cpe:2.3:o:linux:linux_kernel:4.19.174
-
cpe:2.3:o:linux:linux_kernel:4.19.175
-
cpe:2.3:o:linux:linux_kernel:4.19.176
-
cpe:2.3:o:linux:linux_kernel:4.19.177
-
cpe:2.3:o:linux:linux_kernel:4.19.178
-
cpe:2.3:o:linux:linux_kernel:4.19.179
-
cpe:2.3:o:linux:linux_kernel:4.19.180
-
cpe:2.3:o:linux:linux_kernel:4.19.181
-
cpe:2.3:o:linux:linux_kernel:4.19.182
-
cpe:2.3:o:linux:linux_kernel:4.19.183
-
cpe:2.3:o:linux:linux_kernel:4.19.184
-
cpe:2.3:o:linux:linux_kernel:4.19.185
-
cpe:2.3:o:linux:linux_kernel:4.19.186
-
cpe:2.3:o:linux:linux_kernel:4.19.187
-
cpe:2.3:o:linux:linux_kernel:4.19.188
-
cpe:2.3:o:linux:linux_kernel:4.19.189
-
cpe:2.3:o:linux:linux_kernel:4.19.190
-
cpe:2.3:o:linux:linux_kernel:4.4.248
-
cpe:2.3:o:linux:linux_kernel:4.4.249
-
cpe:2.3:o:linux:linux_kernel:4.4.250
-
cpe:2.3:o:linux:linux_kernel:4.4.251
-
cpe:2.3:o:linux:linux_kernel:4.4.252
-
cpe:2.3:o:linux:linux_kernel:4.4.253
-
cpe:2.3:o:linux:linux_kernel:4.4.254
-
cpe:2.3:o:linux:linux_kernel:4.4.255
-
cpe:2.3:o:linux:linux_kernel:4.4.256
-
cpe:2.3:o:linux:linux_kernel:4.4.257
-
cpe:2.3:o:linux:linux_kernel:4.4.258
-
cpe:2.3:o:linux:linux_kernel:4.4.259
-
cpe:2.3:o:linux:linux_kernel:4.4.260
-
cpe:2.3:o:linux:linux_kernel:4.4.261
-
cpe:2.3:o:linux:linux_kernel:4.4.262
-
cpe:2.3:o:linux:linux_kernel:4.4.263
-
cpe:2.3:o:linux:linux_kernel:4.4.264
-
cpe:2.3:o:linux:linux_kernel:4.4.265
-
cpe:2.3:o:linux:linux_kernel:4.4.266
-
cpe:2.3:o:linux:linux_kernel:4.4.267
-
cpe:2.3:o:linux:linux_kernel:4.4.268
-
cpe:2.3:o:linux:linux_kernel:4.4.269
-
cpe:2.3:o:linux:linux_kernel:4.4.270
-
cpe:2.3:o:linux:linux_kernel:4.9.248
-
cpe:2.3:o:linux:linux_kernel:4.9.249
-
cpe:2.3:o:linux:linux_kernel:4.9.250
-
cpe:2.3:o:linux:linux_kernel:4.9.251
-
cpe:2.3:o:linux:linux_kernel:4.9.252
-
cpe:2.3:o:linux:linux_kernel:4.9.253
-
cpe:2.3:o:linux:linux_kernel:4.9.254
-
cpe:2.3:o:linux:linux_kernel:4.9.255
-
cpe:2.3:o:linux:linux_kernel:4.9.256
-
cpe:2.3:o:linux:linux_kernel:4.9.257
-
cpe:2.3:o:linux:linux_kernel:4.9.258
-
cpe:2.3:o:linux:linux_kernel:4.9.259
-
cpe:2.3:o:linux:linux_kernel:4.9.260
-
cpe:2.3:o:linux:linux_kernel:4.9.261
-
cpe:2.3:o:linux:linux_kernel:4.9.262
-
cpe:2.3:o:linux:linux_kernel:4.9.263
-
cpe:2.3:o:linux:linux_kernel:4.9.264
-
cpe:2.3:o:linux:linux_kernel:4.9.265
-
cpe:2.3:o:linux:linux_kernel:4.9.266
-
cpe:2.3:o:linux:linux_kernel:4.9.267
-
cpe:2.3:o:linux:linux_kernel:4.9.268
-
cpe:2.3:o:linux:linux_kernel:4.9.269
-
cpe:2.3:o:linux:linux_kernel:4.9.270
-
cpe:2.3:o:linux:linux_kernel:5.10
-
cpe:2.3:o:linux:linux_kernel:5.10.0
-
cpe:2.3:o:linux:linux_kernel:5.10.1
-
cpe:2.3:o:linux:linux_kernel:5.10.10
-
cpe:2.3:o:linux:linux_kernel:5.10.11
-
cpe:2.3:o:linux:linux_kernel:5.10.12
-
cpe:2.3:o:linux:linux_kernel:5.10.13
-
cpe:2.3:o:linux:linux_kernel:5.10.14
-
cpe:2.3:o:linux:linux_kernel:5.10.15
-
cpe:2.3:o:linux:linux_kernel:5.10.16
-
cpe:2.3:o:linux:linux_kernel:5.10.17
-
cpe:2.3:o:linux:linux_kernel:5.10.18
-
cpe:2.3:o:linux:linux_kernel:5.10.19
-
cpe:2.3:o:linux:linux_kernel:5.10.2
-
cpe:2.3:o:linux:linux_kernel:5.10.20
-
cpe:2.3:o:linux:linux_kernel:5.10.21
-
cpe:2.3:o:linux:linux_kernel:5.10.22
-
cpe:2.3:o:linux:linux_kernel:5.10.23
-
cpe:2.3:o:linux:linux_kernel:5.10.24
-
cpe:2.3:o:linux:linux_kernel:5.10.25
-
cpe:2.3:o:linux:linux_kernel:5.10.26
-
cpe:2.3:o:linux:linux_kernel:5.10.27
-
cpe:2.3:o:linux:linux_kernel:5.10.28
-
cpe:2.3:o:linux:linux_kernel:5.10.29
-
cpe:2.3:o:linux:linux_kernel:5.10.3
-
cpe:2.3:o:linux:linux_kernel:5.10.30
-
cpe:2.3:o:linux:linux_kernel:5.10.31
-
cpe:2.3:o:linux:linux_kernel:5.10.32
-
cpe:2.3:o:linux:linux_kernel:5.10.33
-
cpe:2.3:o:linux:linux_kernel:5.10.34
-
cpe:2.3:o:linux:linux_kernel:5.10.35
-
cpe:2.3:o:linux:linux_kernel:5.10.36
-
cpe:2.3:o:linux:linux_kernel:5.10.4
-
cpe:2.3:o:linux:linux_kernel:5.10.5
-
cpe:2.3:o:linux:linux_kernel:5.10.6
-
cpe:2.3:o:linux:linux_kernel:5.10.7
-
cpe:2.3:o:linux:linux_kernel:5.10.8
-
cpe:2.3:o:linux:linux_kernel:5.10.9
-
cpe:2.3:o:linux:linux_kernel:5.11
-
cpe:2.3:o:linux:linux_kernel:5.11.1
-
cpe:2.3:o:linux:linux_kernel:5.11.10
-
cpe:2.3:o:linux:linux_kernel:5.11.11
-
cpe:2.3:o:linux:linux_kernel:5.11.12
-
cpe:2.3:o:linux:linux_kernel:5.11.13
-
cpe:2.3:o:linux:linux_kernel:5.11.14
-
cpe:2.3:o:linux:linux_kernel:5.11.15
-
cpe:2.3:o:linux:linux_kernel:5.11.16
-
cpe:2.3:o:linux:linux_kernel:5.11.17
-
cpe:2.3:o:linux:linux_kernel:5.11.18
-
cpe:2.3:o:linux:linux_kernel:5.11.19
-
cpe:2.3:o:linux:linux_kernel:5.11.2
-
cpe:2.3:o:linux:linux_kernel:5.11.20
-
cpe:2.3:o:linux:linux_kernel:5.11.3
-
cpe:2.3:o:linux:linux_kernel:5.11.4
-
cpe:2.3:o:linux:linux_kernel:5.11.5
-
cpe:2.3:o:linux:linux_kernel:5.11.6
-
cpe:2.3:o:linux:linux_kernel:5.11.7
-
cpe:2.3:o:linux:linux_kernel:5.11.8
-
cpe:2.3:o:linux:linux_kernel:5.11.9
-
cpe:2.3:o:linux:linux_kernel:5.12
-
cpe:2.3:o:linux:linux_kernel:5.12.1
-
cpe:2.3:o:linux:linux_kernel:5.12.2
-
cpe:2.3:o:linux:linux_kernel:5.12.3
-
cpe:2.3:o:linux:linux_kernel:5.4.100
-
cpe:2.3:o:linux:linux_kernel:5.4.101
-
cpe:2.3:o:linux:linux_kernel:5.4.102
-
cpe:2.3:o:linux:linux_kernel:5.4.103
-
cpe:2.3:o:linux:linux_kernel:5.4.104
-
cpe:2.3:o:linux:linux_kernel:5.4.105
-
cpe:2.3:o:linux:linux_kernel:5.4.106
-
cpe:2.3:o:linux:linux_kernel:5.4.107
-
cpe:2.3:o:linux:linux_kernel:5.4.108
-
cpe:2.3:o:linux:linux_kernel:5.4.109
-
cpe:2.3:o:linux:linux_kernel:5.4.110
-
cpe:2.3:o:linux:linux_kernel:5.4.111
-
cpe:2.3:o:linux:linux_kernel:5.4.112
-
cpe:2.3:o:linux:linux_kernel:5.4.113
-
cpe:2.3:o:linux:linux_kernel:5.4.114
-
cpe:2.3:o:linux:linux_kernel:5.4.115
-
cpe:2.3:o:linux:linux_kernel:5.4.116
-
cpe:2.3:o:linux:linux_kernel:5.4.117
-
cpe:2.3:o:linux:linux_kernel:5.4.118
-
cpe:2.3:o:linux:linux_kernel:5.4.80
-
cpe:2.3:o:linux:linux_kernel:5.4.81
-
cpe:2.3:o:linux:linux_kernel:5.4.82
-
cpe:2.3:o:linux:linux_kernel:5.4.83
-
cpe:2.3:o:linux:linux_kernel:5.4.84
-
cpe:2.3:o:linux:linux_kernel:5.4.85
-
cpe:2.3:o:linux:linux_kernel:5.4.86
-
cpe:2.3:o:linux:linux_kernel:5.4.87
-
cpe:2.3:o:linux:linux_kernel:5.4.88
-
cpe:2.3:o:linux:linux_kernel:5.4.89
-
cpe:2.3:o:linux:linux_kernel:5.4.90
-
cpe:2.3:o:linux:linux_kernel:5.4.91
-
cpe:2.3:o:linux:linux_kernel:5.4.92
-
cpe:2.3:o:linux:linux_kernel:5.4.93
-
cpe:2.3:o:linux:linux_kernel:5.4.94
-
cpe:2.3:o:linux:linux_kernel:5.4.95
-
cpe:2.3:o:linux:linux_kernel:5.4.96
-
cpe:2.3:o:linux:linux_kernel:5.4.97
-
cpe:2.3:o:linux:linux_kernel:5.4.98
-
cpe:2.3:o:linux:linux_kernel:5.4.99