---
id: CVE-2026-99136
title: 'dm-crypt: fix a tiny race condition in crypt_dec_pending'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  dm-crypt: fix a tiny race condition in crypt_dec_pending

  crypt_dec_pending reads io->error before calling atomic_dec_and_test.
  Another context, for example crypt_endio…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= b35f8caa0890169000fec22902290d9a15274cbd <
    ac5d887ab93592fc5e3605fe30c1d8d232d609b3
  - >-
    Linux >= b35f8caa0890169000fec22902290d9a15274cbd <
    4f16bb982b27b9f5a15301f622c318001fe521f8
  - >-
    Linux >= b35f8caa0890169000fec22902290d9a15274cbd <
    148845aa1921d95ef5dc851c76e6a284f6657df6
  - Linux 9c8f3fcd3ffd3283cc0971c8919058356f20a963
  - Linux >= 2.6.28.9 < 2.6.29
  - Linux 2.6.29
published: '2026-10-28'
updated: '2026-10-28'
sourceUpdated: '2026-10-28T10:34:48.558Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-99136'
references:
  - url: 'https://git.kernel.org/stable/c/ac5d887ab93592fc5e3605fe30c1d8d232d609b3'
  - url: 'https://git.kernel.org/stable/c/4f16bb982b27b9f5a15301f622c318001fe521f8'
  - url: 'https://git.kernel.org/stable/c/148845aa1921d95ef5dc851c76e6a284f6657df6'
tags:
  - cve.org
ingestedAt: '2026-10-28T11:09:40.432Z'
---

## Overview

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

dm-crypt: fix a tiny race condition in crypt_dec_pending

crypt_dec_pending reads io->error before calling atomic_dec_and_test.
Another context, for example crypt_endio called from an interrupt, may
set io->error and drop its reference between the read and the
decrement. crypt_dec_pending then drops the last reference and completes
the bio with the stale status - so a read that failed and was never
decrypted, or a write that failed, is reported as successful.

The read was placed before the decrement by commit b35f8caa0890 ("dm
crypt: wait for endio to complete before destruction"), because that
commit freed dm_crypt_io before calling bio_endio. This is no longer the
case, dm_crypt_io lives in the per-bio data now.

Read io->error after atomic_dec_and_test instead. atomic_dec_and_test is
fully ordered, so no additional barrier is needed.

## Affected

- `Linux >= b35f8caa0890169000fec22902290d9a15274cbd < ac5d887ab93592fc5e3605fe30c1d8d232d609b3`
- `Linux >= b35f8caa0890169000fec22902290d9a15274cbd < 4f16bb982b27b9f5a15301f622c318001fe521f8`
- `Linux >= b35f8caa0890169000fec22902290d9a15274cbd < 148845aa1921d95ef5dc851c76e6a284f6657df6`
- `Linux 9c8f3fcd3ffd3283cc0971c8919058356f20a963`
- `Linux >= 2.6.28.9 < 2.6.29`
- `Linux 2.6.29`

## Remediation

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