---
id: CVE-2025-38103
title: 'HID: usbhid: Eliminate recurrent out-of-bounds bug in usbhid_parse()'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  HID: usbhid: Eliminate recurrent out-of-bounds bug in usbhid_parse()

  Update struct hid_descriptor to better reflect the mandatory and
  optional parts of the HID Descrip…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b <
    7a6d6b68db128da2078ccd9a751dfa3f75c9cf5b
  - >-
    Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b <
    41827a2dbdd7880df9881506dee13bc88d4230bb
  - >-
    Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b <
    1df80d748f984290c895e843401824215dcfbfb0
  - >-
    Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b <
    a8f842534807985d3a676006d140541b87044345
  - >-
    Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b <
    4fa7831cf0ac71a0a345369d1a6084f2b096e55e
  - >-
    Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b <
    74388368927e9c52a69524af5bbd6c55eb4690de
  - >-
    Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b <
    485e1b741eb838cbe1d6b0e81e5ab62ae6c095cf
  - >-
    Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b <
    fe7f7ac8e0c708446ff017453add769ffc15deed
  - Linux 99de0781e0de7c866f762b931351c2a501c3074f
  - Linux 8d675aa967d3927ac100f7af48f2a2af8a041d2d
  - Linux f4cf5d75416ae3d79e03179fe6f4b9f1231ae42c
  - Linux 439f76690d7d5dd212ea7bebc1f2fa077e3d645d
  - Linux 2929cb995378205bceda86d6fd3cbc22e522f97f
  - Linux 57265cddde308292af881ce634a5378dd4e25900
  - Linux 984154e7eef1f9e543dabd7422cfc99015778732
  - Linux >= 3.2.95 < 3.3
  - Linux >= 3.16.50 < 3.17
  - Linux >= 3.18.76 < 3.19
  - Linux >= 4.1.46 < 4.2
  - Linux >= 4.4.93 < 4.5
  - Linux >= 4.9.57 < 4.10
  - Linux >= 4.13.8 < 4.14
  - Linux 4.14
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-11-05T20:49:35.266935Z'
published: '2025-07-03'
updated: '2026-11-05'
sourceUpdated: '2026-11-05T20:52:15.798Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2025-38103'
references:
  - url: 'https://git.kernel.org/stable/c/7a6d6b68db128da2078ccd9a751dfa3f75c9cf5b'
  - url: 'https://git.kernel.org/stable/c/41827a2dbdd7880df9881506dee13bc88d4230bb'
  - url: 'https://git.kernel.org/stable/c/1df80d748f984290c895e843401824215dcfbfb0'
  - url: 'https://git.kernel.org/stable/c/a8f842534807985d3a676006d140541b87044345'
  - url: 'https://git.kernel.org/stable/c/4fa7831cf0ac71a0a345369d1a6084f2b096e55e'
  - url: 'https://git.kernel.org/stable/c/74388368927e9c52a69524af5bbd6c55eb4690de'
  - url: 'https://git.kernel.org/stable/c/485e1b741eb838cbe1d6b0e81e5ab62ae6c095cf'
  - url: 'https://git.kernel.org/stable/c/fe7f7ac8e0c708446ff017453add769ffc15deed'
tags:
  - cve.org
epss: 0.00229
epssPercentile: 0.13742
ingestedAt: '2026-11-05T22:38:31.919Z'
---

## Overview

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

HID: usbhid: Eliminate recurrent out-of-bounds bug in usbhid_parse()

Update struct hid_descriptor to better reflect the mandatory and
optional parts of the HID Descriptor as per USB HID 1.11 specification.
Note: the kernel currently does not parse any optional HID class
descriptors, only the mandatory report descriptor.

Update all references to member element desc[0] to rpt_desc.

Add test to verify bLength and bNumDescriptors values are valid.

Replace the for loop with direct access to the mandatory HID class
descriptor member for the report descriptor. This eliminates the
possibility of getting an out-of-bounds fault.

Add a warning message if the HID descriptor contains any unsupported
optional HID class descriptors.

## Affected

- `Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b < 7a6d6b68db128da2078ccd9a751dfa3f75c9cf5b`
- `Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b < 41827a2dbdd7880df9881506dee13bc88d4230bb`
- `Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b < 1df80d748f984290c895e843401824215dcfbfb0`
- `Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b < a8f842534807985d3a676006d140541b87044345`
- `Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b < 4fa7831cf0ac71a0a345369d1a6084f2b096e55e`
- `Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b < 74388368927e9c52a69524af5bbd6c55eb4690de`
- `Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b < 485e1b741eb838cbe1d6b0e81e5ab62ae6c095cf`
- `Linux >= f043bfc98c193c284e2cd768fefabe18ac2fed9b < fe7f7ac8e0c708446ff017453add769ffc15deed`
- `Linux 99de0781e0de7c866f762b931351c2a501c3074f`
- `Linux 8d675aa967d3927ac100f7af48f2a2af8a041d2d`
- `Linux f4cf5d75416ae3d79e03179fe6f4b9f1231ae42c`
- `Linux 439f76690d7d5dd212ea7bebc1f2fa077e3d645d`
- `Linux 2929cb995378205bceda86d6fd3cbc22e522f97f`
- `Linux 57265cddde308292af881ce634a5378dd4e25900`
- `Linux 984154e7eef1f9e543dabd7422cfc99015778732`
- `Linux >= 3.2.95 < 3.3`
- `Linux >= 3.16.50 < 3.17`
- `Linux >= 3.18.76 < 3.19`
- `Linux >= 4.1.46 < 4.2`
- `Linux >= 4.4.93 < 4.5`
- `Linux >= 4.9.57 < 4.10`
- `Linux >= 4.13.8 < 4.14`
- `Linux 4.14`

## Remediation

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