---
id: CVE-2026-99063
title: 'dm ioctl: don''t let data_start run past the buffer'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  dm ioctl: don't let data_start run past the buffer

  struct dm_ioctl has seven bytes of trailing padding, so the smallest
  buffer userspace is allowed to ask for, offseto…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 76c072b48e39e9291fbf02d6c912cf27d65e093d <
    98195e822343a656b92e235847ab3e72b1a3f920
  - >-
    Linux >= 76c072b48e39e9291fbf02d6c912cf27d65e093d <
    e5c3f3d8935ecc64c962fb66e6a86dbf79218f61
  - >-
    Linux >= 76c072b48e39e9291fbf02d6c912cf27d65e093d <
    5680b6fb3054677d4ee65d3baba24b649f1b430e
  - >-
    Linux >= 76c072b48e39e9291fbf02d6c912cf27d65e093d <
    725b49c689bbb29ef740b0d6b5ea9390baa9a695
  - >-
    Linux >= 76c072b48e39e9291fbf02d6c912cf27d65e093d <
    9b3fcf519d370df94a56f3b272d9eddffffa5be8
  - Linux 2.6.25
published: '2026-10-23'
updated: '2026-10-23'
sourceUpdated: '2026-10-23T12:23:04.655Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-99063'
references:
  - url: 'https://git.kernel.org/stable/c/98195e822343a656b92e235847ab3e72b1a3f920'
  - url: 'https://git.kernel.org/stable/c/e5c3f3d8935ecc64c962fb66e6a86dbf79218f61'
  - url: 'https://git.kernel.org/stable/c/5680b6fb3054677d4ee65d3baba24b649f1b430e'
  - url: 'https://git.kernel.org/stable/c/725b49c689bbb29ef740b0d6b5ea9390baa9a695'
  - url: 'https://git.kernel.org/stable/c/9b3fcf519d370df94a56f3b272d9eddffffa5be8'
tags:
  - cve.org
ingestedAt: '2026-10-23T13:24:55.517Z'
---

## Overview

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

dm ioctl: don't let data_start run past the buffer

struct dm_ioctl has seven bytes of trailing padding, so the smallest
buffer userspace is allowed to ask for, offsetof(struct dm_ioctl, data),
is seven bytes shorter than sizeof(struct dm_ioctl).

get_result_buffer() sets data_start to sizeof(struct dm_ioctl) without
looking at how big the buffer actually is. Ask for the minimum and
data_start ends up seven bytes past the end. Callers add it to
data_size, and ctl_ioctl() copies that much back to userspace:

  BUG: KASAN: slab-out-of-bounds in _copy_to_user+0xad/0xd0
  Read of size 312 at addr ffff8880169e4c00 by task repro-dm/140
   ctl_ioctl+0x5e3/0xcb0
   dm_ctl_ioctl+0x25/0x40
  allocated 305-byte region [ffff8880169e4c00, ffff8880169e4d31)

A DM_LIST_DEVICES with data_size set to 305 is enough to hit it, and the
seven bytes that leak are whatever sat next to the allocation.

Clamp data_start to the buffer size.

Note that this is not a security bug because the out-of-bounds read can
only be triggered by root.

## Affected

- `Linux >= 76c072b48e39e9291fbf02d6c912cf27d65e093d < 98195e822343a656b92e235847ab3e72b1a3f920`
- `Linux >= 76c072b48e39e9291fbf02d6c912cf27d65e093d < e5c3f3d8935ecc64c962fb66e6a86dbf79218f61`
- `Linux >= 76c072b48e39e9291fbf02d6c912cf27d65e093d < 5680b6fb3054677d4ee65d3baba24b649f1b430e`
- `Linux >= 76c072b48e39e9291fbf02d6c912cf27d65e093d < 725b49c689bbb29ef740b0d6b5ea9390baa9a695`
- `Linux >= 76c072b48e39e9291fbf02d6c912cf27d65e093d < 9b3fcf519d370df94a56f3b272d9eddffffa5be8`
- `Linux 2.6.25`

## Remediation

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