{
  "affected": [
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:12",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "6.1.187-1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:13",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "6.12.107-1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:14",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "7.1.12-1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:12",
        "name": "linux-6.12"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "6.12.107-1~deb12u1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "details": "In the Linux kernel, the following vulnerability has been resolved:  HID: core: fix OOB read of field-\u003eusage in hid_set_field()  hid_set_field() hands field-\u003eusage + offset to hid_dump_input() before the guard that bounds offset:  \thid_dump_input(field-\u003ereport-\u003edevice, field-\u003eusage + offset, value);  \tif (offset \u003e= field-\u003ereport_count) { \t\thid_err(...); \t\treturn -1; \t}  Under CONFIG_DEBUG_FS hid_dump_input() dereferences that pointer, with buf = hid_resolv_usage(usage-\u003ehid, NULL).  The usage[] array is allocated inline with the hid_field in hid_register_field() and holds field-\u003emaxusage entries, so an offset past it reads off the end of the kvzalloc()ed allocation and into a neighbouring object.  Had the guard run first, offset \u003c report_count \u003c= maxusage would already have confined the pointer to the array.  A caller supplies such an offset today.  picolcd_fb_send_tile() validates only report-\u003emaxfield before issuing hid_set_field(report-\u003efield[0], 11 + i, ...) for i = 0..31, so its offsets are fixed at 11..42 and are never checked against the bound field.  When the device registers that field with fewer usages, the framebuffer deferred-io work drives the read on every tile.  KASAN reports a 4-byte slab-out-of-bounds read in hid_dump_input() below hid_set_field(), and the same boot logs \"offset (1) exceeds report_count (1)\" from the guard that runs only afterwards.  Move the hid_dump_input() call below the guard.  Because field-\u003emaxusage \u003e= field-\u003ereport_count, the guard then establishes that field-\u003eusage + offset lies inside the array before it is dereferenced, for every caller and without changing behaviour on the valid path.  Discovered by XBOW, triaged by Baul Lee \u003cbaul.lee@xbow.com\u003e",
  "id": "DEBIAN-CVE-2026-80781",
  "modified": "2026-09-19T21:47:30.832782932Z",
  "published": "2026-09-04T16:18:03.867Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://security-tracker.debian.org/tracker/CVE-2026-80781"
    }
  ],
  "upstream": [
    "CVE-2026-80781"
  ]
}