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

HID: core: fix number/pointer type confusion on long items

When fetch_item() is called by hid_scan_report() on an item with
HID_ITEM_TAG_LONG, it stores a pointer to the item data in
item->data.longdata instead of storing a value directly in
item->data.{u8/u16/u32}.

When item_udata() or item_sdata() encounters such an item, it incorrectly
assumes that the item is in short format, and therefore returns the lower
part of a kernel pointer reinterpreted as a number.

When a HID device is connected whose descriptor contains a
HID_GLOBAL_ITEM_TAG_REPORT_SIZE encoded in long format with size=4, this
causes the lower half of a kernel pointer to be printed into dmesg as a
number, like this:

hid (null): invalid report_size 107953555

To fix it, let item_udata() and item_sdata() verify that the item is in
short format.

Note that this bug only affects hid_scan_report(), while the main parsing
pass hid_parse_collections() will always bail out when encountering a long
item.

Sidenote: There are currently no users of data.longdata; maybe we should
just remove any parsing of long-format descriptors as a follow-up.
Published: 2026-09-09
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Linux kernel’s HID core parsing functions suffered a type confusion flaw. When a descriptor contains a long-format HID global item, the code stores a pointer instead of numeric data. Subsequent extraction routines mistakenly interpret that pointer as an integer, causing the lower portion of a kernel address to be printed to the kernel log. Because the address is exposed in dmesg, an attacker who can supply or alter a HID descriptor can gain information about the kernel address space.

Affected Systems

All Linux kernels running a version before the commit that addresses the HID parsing bug are affected. The issue is present in the generic Linux kernel code and is independent of distribution. Any system that loads a vulnerable kernel and encounters a HID device with a long-format descriptor may trigger the leak.

Risk and Exploitability

The vulnerability is not listed in the CISA KEV catalog and no EPSS score is available. An attacker with the ability to supply HID descriptors to a system can trigger a log entry that leaks a partial kernel address. The direct impact is information disclosure; it does not grant code execution but can serve as a foothold for more serious attacks. The overall risk is moderate based on the information available.

Generated by OpenCVE AI on September 9, 2026 at 18:25 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that includes the commit which corrects the HID parsing bug
  • Reboot the system after upgrading to ensure the patched code is in use
  • Configure system monitoring to detect unintended kernel address exposure in dmesg logs

Generated by OpenCVE AI on September 9, 2026 at 18:25 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 09 Sep 2026 18:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-200

Wed, 09 Sep 2026 16:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: HID: core: fix number/pointer type confusion on long items When fetch_item() is called by hid_scan_report() on an item with HID_ITEM_TAG_LONG, it stores a pointer to the item data in item->data.longdata instead of storing a value directly in item->data.{u8/u16/u32}. When item_udata() or item_sdata() encounters such an item, it incorrectly assumes that the item is in short format, and therefore returns the lower part of a kernel pointer reinterpreted as a number. When a HID device is connected whose descriptor contains a HID_GLOBAL_ITEM_TAG_REPORT_SIZE encoded in long format with size=4, this causes the lower half of a kernel pointer to be printed into dmesg as a number, like this: hid (null): invalid report_size 107953555 To fix it, let item_udata() and item_sdata() verify that the item is in short format. Note that this bug only affects hid_scan_report(), while the main parsing pass hid_parse_collections() will always bail out when encountering a long item. Sidenote: There are currently no users of data.longdata; maybe we should just remove any parsing of long-format descriptors as a follow-up.
Title HID: core: fix number/pointer type confusion on long items
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-09T16:13:15.799Z

Reserved: 2026-08-26T14:34:25.801Z

Link: CVE-2026-80918

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-09T17:17:46.847

Modified: 2026-09-09T17:17:46.847

Link: CVE-2026-80918

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-09T18:30:13Z

Weaknesses
  • CWE-200

    Exposure of Sensitive Information to an Unauthorized Actor