---
id: CVE-2025-21738
title: |-
  In the Linux kernel, the following vulnerability has been resolved:

  ata: libata-sff: Ensure that we cannot write outside the allocated buffer

  reveliofuzzing reported that a SCSI_IOCTL_SEND_COMMAND ioctl with out_len
  set to 0xd42, SCSI …
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  ata: libata-sff: Ensure that we cannot write outside the allocated buffer

  reveliofuzzing reported that a SCSI_IOCTL_SEND_COMMAND ioctl with out_len
  set to 0xd42, SCSI …
severity: high
cvss: 7.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'
vendor: linux
product: linux_kernel
affected:
  - linux_kernel < 6.1.129
  - 'linux_kernel >= 6.2, < 6.6.78'
  - 'linux_kernel >= 6.7, < 6.12.14'
  - 'linux_kernel >= 6.13, < 6.13.3'
patched:
  - linux_kernel 6.13.3
published: '2025-02-27'
updated: '2026-07-30'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2025-21738'
references:
  - url: 'https://git.kernel.org/stable/c/0a17a9944b8d89ef03946121241870ac53ddaf45'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/0dd5aade301a10f4b329fa7454fdcc2518741902'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/6e74e53b34b6dec5a50e1404e2680852ec6768d2'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/a8f8cf87059ed1905c2a5c72f8b39a4f57b11b4c'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/d5e6e3000309359eae2a17117aa6e3c44897bf6c'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://lists.debian.org/debian-lts-announce/2025/03/msg00028.html'
    label: af854a3a-2127-422b-91ae-364da2661108
tags:
  - nvd
epss: 0.00224
epssPercentile: 0.11729
ingestedAt: '2026-07-30T06:53:09.596Z'
---

## Overview

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

ata: libata-sff: Ensure that we cannot write outside the allocated buffer

reveliofuzzing reported that a SCSI_IOCTL_SEND_COMMAND ioctl with out_len
set to 0xd42, SCSI command set to ATA_16 PASS-THROUGH, ATA command set to
ATA_NOP, and protocol set to ATA_PROT_PIO, can cause ata_pio_sector() to
write outside the allocated buffer, overwriting random memory.

While a ATA device is supposed to abort a ATA_NOP command, there does seem
to be a bug either in libata-sff or QEMU, where either this status is not
set, or the status is cleared before read by ata_sff_hsm_move().
Anyway, that is most likely a separate bug.

Looking at __atapi_pio_bytes(), it already has a safety check to ensure
that __atapi_pio_bytes() cannot write outside the allocated buffer.

Add a similar check to ata_pio_sector(), such that also ata_pio_sector()
cannot write outside the allocated buffer.

## Affected

- `linux_kernel < 6.1.129`
- `linux_kernel >= 6.2, < 6.6.78`
- `linux_kernel >= 6.7, < 6.12.14`
- `linux_kernel >= 6.13, < 6.13.3`

## Remediation

Upgrade past the affected range:

- `linux_kernel 6.13.3`
