Bug 2489082 - Regression in kernel-7.0.11-200.fc44: LUKS keyslot decryption fails with "IO error while decrypting keyslot" - cannot unlock any encrypted volume except the root device
Summary: Regression in kernel-7.0.11-200.fc44: LUKS keyslot decryption fails with "IO ...
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: Fedora
Classification: Fedora
Component: kernel
Version: 44
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: ---
Assignee: Justin M. Forbes
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-06-16 02:51 UTC by Johnny Net
Modified: 2026-07-01 22:29 UTC (History)
15 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2026-07-01 22:28:37 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Johnny Net 2026-06-16 02:51:08 UTC
1. Please describe the problem:

Since kernel-7.0.11-200.fc44, opening any LUKS-encrypted volume other than the already-unlocked root device fails during keyslot decryption. cryptsetup reports:

    IO error while decrypting keyslot.
    Keyslot open failed.

GNOME Disks reports the same failure as: input/output error (udisks-error-quark, 0)

The failure occurs both via the GNOME/udisks unlock workflow AND when running `cryptsetup open` directly as root in a terminal, so it is not a udisks, polkit, or SELinux issue (confirmed: `setenforce 0` makes no difference).

Facts that narrow it down:
- Reproduces with USB-Flashdrive, USB SATA(HDD), and NVMe encrypted drives (USB and Thunderbolt)
- The encrypted root volume still unlocks normally at boot (initramfs), so dm-crypt mapping with an already-derived key works. The failure is specifically in keyslot-area decryption when opening a volume from the running system.
- Unencrypted external drives mount without issue.
- `cryptsetup benchmark` shows aes-xts-plain64 working normally, so in-memory crypto is fine.
- The same drives open without error on CachyOS and Ubuntu running the same upstream kernel version 7.0.xx, and on Fedora before 7.0.11.
- cryptsetup / cryptsetup-libs are unchanged (F44 baseline; not downgradable), ruling out a userspace cryptsetup change.

This points to a regression in the crypto / dm-crypt / direct-I/O read path introduced between 7.0.10 and 7.0.11.


2. What is the Version-Release number of the kernel:

kernel-7.0.11-200.fc44.x86_64 (first bad build). Also reproduces on kernel-7.0.12-200.fc44.x86_64.


3. Did it work previously in Fedora? If so, what kernel version did the issue
   *first* appear?

Yes, it worked previously. The issue first appears in kernel-7.0.11-200.fc44.x86_64.
kernel-7.0.10-200.fc44.x86_64 works correctly; kernel-7.0.11-200.fc44.x86_64 fails. This was confirmed by a clean bisection across two separate F44 systems: on one, upgrading from 7.0.8 to 7.0.12 introduced the failure and reverting to 7.0.8 fixed it; testing intermediate builds from Koji isolated the first bad build to 7.0.11. Booting back into 7.0.10 reliably restores correct behavior.


4. Can you reproduce this issue? If so, please provide the steps to reproduce
   the issue below:

Yes, reproducible 100% of the time.
1. Boot kernel-7.0.11-200.fc44 or newer.
2. Attach any LUKS-encrypted external drive (USB/Thunderbolt).
3. Run: sudo cryptsetup open /dev/sdX or /dev/nvmeXnXpX test   (enter the correct passphrase)

Actual result: "IO error while decrypting keyslot. Keyslot open failed." — the volume does not open.

Expected result: the volume opens, as it does on kernel-7.0.10-200.fc44 and on other distributions.


5. Does this problem occur with the latest Rawhide kernel? To install the
   Rawhide kernel, run ``sudo dnf install fedora-repos-rawhide`` followed by
   ``sudo dnf update --enablerepo=rawhide kernel``:

[Not yet tested.]


6. Are you running any modules that not shipped with directly Fedora's kernel?:

No. Stock Fedora kernel only; no third-party or out-of-tree modules.


7. Please attach the kernel logs. You can get the complete kernel log
   for a boot with ``journalctl --no-hostname -k > dmesg.txt``. If the
   issue occurred on a previous boot, use the journalctl ``-b`` flag.

Can attach upon request, but I am actually glad to be on a working kernel version rn.

Reproducible: Always

Comment 1 Michael Sheldon 2026-06-19 20:12:57 UTC
I ran across this problem, and discovered it is possible to open an external luks drive on the 7.0.12 kernel with a bit of workaround.

Export the luks header to file: luksHeaderBackup  --header-backup-file <headerfile>
Then, when opening the drive, specify the external header file: cryptsetup luksOpen --header <headerfile> <device> <volume>

Comment 2 Johnny Net 2026-07-01 22:28:37 UTC
Fixed in 7.0.13


Note You need to log in before you can comment on or make changes to this bug.