---
id: CVE-2026-31606
title: 'usb: gadget: f_hid: don''t call cdev_init while cdev in use'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  usb: gadget: f_hid: don't call cdev_init while cdev in use

  When calling unbind, then bind again, cdev_init reinitialized the cdev,
  even though there may still be refer…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= cb382536052fcc7713988869b54a81137069e5a9 <
    3aa77f5da0ecb00895411f4246d8a3e4db0343c2
  - >-
    Linux >= cb382536052fcc7713988869b54a81137069e5a9 <
    c6c0d13db5d0f8d465eabc14bd23d2b6a7247a43
  - >-
    Linux >= cb382536052fcc7713988869b54a81137069e5a9 <
    eb6ef6185f2054a341ec70d7e2165f5381744215
  - >-
    Linux >= cb382536052fcc7713988869b54a81137069e5a9 <
    5a229016ca3ac551294ec59770be9da94ec4bf63
  - >-
    Linux >= cb382536052fcc7713988869b54a81137069e5a9 <
    75ecc46828ec377dd5692c677168ef6d64fd7123
  - >-
    Linux >= cb382536052fcc7713988869b54a81137069e5a9 <
    81ebd43cc0d6d106ce7b6ccbf7b5e40ca7f5503d
  - Linux 3.19
published: '2026-04-24'
updated: '2026-10-21'
sourceUpdated: '2026-10-21T12:39:35.359Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-31606'
references:
  - url: 'https://git.kernel.org/stable/c/3aa77f5da0ecb00895411f4246d8a3e4db0343c2'
  - url: 'https://git.kernel.org/stable/c/c6c0d13db5d0f8d465eabc14bd23d2b6a7247a43'
  - url: 'https://git.kernel.org/stable/c/eb6ef6185f2054a341ec70d7e2165f5381744215'
  - url: 'https://git.kernel.org/stable/c/5a229016ca3ac551294ec59770be9da94ec4bf63'
  - url: 'https://git.kernel.org/stable/c/75ecc46828ec377dd5692c677168ef6d64fd7123'
  - url: 'https://git.kernel.org/stable/c/81ebd43cc0d6d106ce7b6ccbf7b5e40ca7f5503d'
tags:
  - cve.org
epss: 0.00162
epssPercentile: 0.04988
ingestedAt: '2026-10-21T12:48:53.661Z'
---

## Overview

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

usb: gadget: f_hid: don't call cdev_init while cdev in use

When calling unbind, then bind again, cdev_init reinitialized the cdev,
even though there may still be references to it. That's the case when
the /dev/hidg* device is still opened. This obviously unsafe behavior
like oopes.

This fixes this by using cdev_alloc to put the cdev on the heap. That
way, we can simply allocate a new one in hidg_bind.

## Affected

- `Linux >= cb382536052fcc7713988869b54a81137069e5a9 < 3aa77f5da0ecb00895411f4246d8a3e4db0343c2`
- `Linux >= cb382536052fcc7713988869b54a81137069e5a9 < c6c0d13db5d0f8d465eabc14bd23d2b6a7247a43`
- `Linux >= cb382536052fcc7713988869b54a81137069e5a9 < eb6ef6185f2054a341ec70d7e2165f5381744215`
- `Linux >= cb382536052fcc7713988869b54a81137069e5a9 < 5a229016ca3ac551294ec59770be9da94ec4bf63`
- `Linux >= cb382536052fcc7713988869b54a81137069e5a9 < 75ecc46828ec377dd5692c677168ef6d64fd7123`
- `Linux >= cb382536052fcc7713988869b54a81137069e5a9 < 81ebd43cc0d6d106ce7b6ccbf7b5e40ca7f5503d`
- `Linux 3.19`

## Remediation

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