---
id: CVE-2026-31487
title: 'spi: use generic driver_override infrastructure'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  spi: use generic driver_override infrastructure

  When a driver is probed through __driver_attach(), the bus' match()
  callback is called without the device lock held, th…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 5039563e7c25eccd7fec1de6706011009d1c5665 <
    6e8eb467bed6aa1a563dba8f366c9fd76ba0004e
  - >-
    Linux >= 5039563e7c25eccd7fec1de6706011009d1c5665 <
    eedf220442d13b6d97294e5b0ac8a2c38ee1a1a0
  - >-
    Linux >= 5039563e7c25eccd7fec1de6706011009d1c5665 <
    c73a58661a760373d08a6883af4f0bb5cc991a67
  - >-
    Linux >= 5039563e7c25eccd7fec1de6706011009d1c5665 <
    e0ae367a2de06c49aa1de6ec9b1ab6860bbb2cf0
  - >-
    Linux >= 5039563e7c25eccd7fec1de6706011009d1c5665 <
    cc34d77dd48708d810c12bfd6f5bf03304f6c824
  - Linux 4.20
published: '2026-04-22'
updated: '2026-10-21'
sourceUpdated: '2026-10-21T12:39:19.125Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-31487'
references:
  - url: 'https://git.kernel.org/stable/c/6e8eb467bed6aa1a563dba8f366c9fd76ba0004e'
  - url: 'https://git.kernel.org/stable/c/eedf220442d13b6d97294e5b0ac8a2c38ee1a1a0'
  - url: 'https://git.kernel.org/stable/c/c73a58661a760373d08a6883af4f0bb5cc991a67'
  - url: 'https://git.kernel.org/stable/c/e0ae367a2de06c49aa1de6ec9b1ab6860bbb2cf0'
  - url: 'https://git.kernel.org/stable/c/cc34d77dd48708d810c12bfd6f5bf03304f6c824'
tags:
  - cve.org
epss: 0.00125
epssPercentile: 0.01992
ingestedAt: '2026-10-21T12:48:53.665Z'
---

## Overview

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

spi: use generic driver_override infrastructure

When a driver is probed through __driver_attach(), the bus' match()
callback is called without the device lock held, thus accessing the
driver_override field without a lock, which can cause a UAF.

Fix this by using the driver-core driver_override infrastructure taking
care of proper locking internally.

Note that calling match() from __driver_attach() without the device lock
held is intentional. [1]

Also note that we do not enable the driver_override feature of struct
bus_type, as SPI - in contrast to most other buses - passes "" to
sysfs_emit() when the driver_override pointer is NULL. Thus, printing
"\n" instead of "(null)\n".

## Affected

- `Linux >= 5039563e7c25eccd7fec1de6706011009d1c5665 < 6e8eb467bed6aa1a563dba8f366c9fd76ba0004e`
- `Linux >= 5039563e7c25eccd7fec1de6706011009d1c5665 < eedf220442d13b6d97294e5b0ac8a2c38ee1a1a0`
- `Linux >= 5039563e7c25eccd7fec1de6706011009d1c5665 < c73a58661a760373d08a6883af4f0bb5cc991a67`
- `Linux >= 5039563e7c25eccd7fec1de6706011009d1c5665 < e0ae367a2de06c49aa1de6ec9b1ab6860bbb2cf0`
- `Linux >= 5039563e7c25eccd7fec1de6706011009d1c5665 < cc34d77dd48708d810c12bfd6f5bf03304f6c824`
- `Linux 4.20`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
