Description
In the Linux kernel, the following vulnerability has been resolved:
ceph: fix i_nlink underrun during async unlink
During async unlink, we drop the `i_nlink` counter before we receive
the completion (that will eventually update the `i_nlink`) because "we
assume that the unlink will succeed". That is not a bad idea, but it
races against deletions by other clients (or against the completion of
our own unlink) and can lead to an underrun which emits a WARNING like
this one:
WARNING: CPU: 85 PID: 25093 at fs/inode.c:407 drop_nlink+0x50/0x68
Modules linked in:
CPU: 85 UID: 3221252029 PID: 25093 Comm: php-cgi8.1 Not tainted 6.14.11-cm4all1-ampere #655
Hardware name: Supermicro ARS-110M-NR/R12SPD-A, BIOS 1.1b 10/17/2023
pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : drop_nlink+0x50/0x68
lr : ceph_unlink+0x6c4/0x720
sp : ffff80012173bc90
x29: ffff80012173bc90 x28: ffff086d0a45aaf8 x27: ffff0871d0eb5680
x26: ffff087f2a64a718 x25: 0000020000000180 x24: 0000000061c88647
x23: 0000000000000002 x22: ffff07ff9236d800 x21: 0000000000001203
x20: ffff07ff9237b000 x19: ffff088b8296afc0 x18: 00000000f3c93365
x17: 0000000000070000 x16: ffff08faffcbdfe8 x15: ffff08faffcbdfec
x14: 0000000000000000 x13: 45445f65645f3037 x12: 34385f6369706f74
x11: 0000a2653104bb20 x10: ffffd85f26d73290 x9 : ffffd85f25664f94
x8 : 00000000000000c0 x7 : 0000000000000000 x6 : 0000000000000002
x5 : 0000000000000081 x4 : 0000000000000481 x3 : 0000000000000000
x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff08727d3f91e8
Call trace:
drop_nlink+0x50/0x68 (P)
vfs_unlink+0xb0/0x2e8
do_unlinkat+0x204/0x288
__arm64_sys_unlinkat+0x3c/0x80
invoke_syscall.constprop.0+0x54/0xe8
do_el0_svc+0xa4/0xc8
el0_svc+0x18/0x58
el0t_64_sync_handler+0x104/0x130
el0t_64_sync+0x154/0x158
In ceph_unlink(), a call to ceph_mdsc_submit_request() submits the
CEPH_MDS_OP_UNLINK to the MDS, but does not wait for completion.
Meanwhile, between this call and the following drop_nlink() call, a
worker thread may process a CEPH_CAP_OP_IMPORT, CEPH_CAP_OP_GRANT or
just a CEPH_MSG_CLIENT_REPLY (the latter of which could be our own
completion). These will lead to a set_nlink() call, updating the
`i_nlink` counter to the value received from the MDS. If that new
`i_nlink` value happens to be zero, it is illegal to decrement it
further. But that is exactly what ceph_unlink() will do then.
The WARNING can be reproduced this way:
1. Force async unlink; only the async code path is affected. Having
no real clue about Ceph internals, I was unable to find out why the
MDS wouldn't give me the "Fxr" capabilities, so I patched
get_caps_for_async_unlink() to always succeed.
(Note that the WARNING dump above was found on an unpatched kernel,
without this kludge - this is not a theoretical bug.)
2. Add a sleep call after ceph_mdsc_submit_request() so the unlink
completion gets handled by a worker thread before drop_nlink() is
called. This guarantees that the `i_nlink` is already zero before
drop_nlink() runs.
The solution is to skip the counter decrement when it is already zero,
but doing so without a lock is still racy (TOCTOU). Since
ceph_fill_inode() and handle_cap_grant() both hold the
`ceph_inode_info.i_ceph_lock` spinlock while set_nlink() runs, this
seems like the proper lock to protect the `i_nlink` updates.
I found prior art in NFS and SMB (using `inode.i_lock`) and AFS (using
`afs_vnode.cb_lock`). All three have the zero check as well.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Linux | Linux | 5.7 | 5.10.253 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | linux | 6.19.10-1 | — |
| Debian 13 | linux | 6.12.85-1 | — |
| Debian 12 | linux | 6.1.170-1 | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu Nvidia-BlueField 24.04 LTS | linux-bluefield | 6.8.0-1028.33 | — |
| Ubuntu Nvidia-BlueField 22.04 LTS | linux-bluefield | 5.15.0-1096.98 | — |
| Ubuntu 25.10 | linux +8 | No fix yet | — |
| Ubuntu 24.04 LTS | linux | 6.8.0-136.136 | USN-8567-1 |
| Ubuntu 24.04 LTS | linux-aws | 6.8.0-1061.64 | USN-8595-2 |
| Ubuntu 24.04 LTS | linux-azure | 6.8.0-1063.71 | USN-8606-1 |
| Ubuntu 24.04 LTS | linux-azure-fde | 6.8.0-1062.69 | USN-8607-1 |
| Ubuntu 24.04 LTS | linux-gcp | 6.8.0-1064.72 | USN-8567-1 |
| Ubuntu 24.04 LTS | linux-gke | 6.8.0-1059.67 | USN-8567-1 |
| Ubuntu 24.04 LTS | linux-gkeop | 6.8.0-1046.50 | USN-8567-1 |
| Ubuntu 24.04 LTS | linux-ibm | 6.8.0-1061.62 | USN-8574-3 |
| Ubuntu 24.04 LTS | linux-lowlatency | 6.8.0-136.136.2 | USN-8574-2 |
| Ubuntu 24.04 LTS | linux-nvidia | 6.8.0-1059.62 | USN-8596-1 |
| Ubuntu 24.04 LTS | linux-nvidia-lowlatency | 6.8.0-1059.62.1 | USN-8596-1 |
| Ubuntu 24.04 LTS | linux-nvidia-tegra | 6.8.0-1030.31 | USN-8574-3 |
| Ubuntu 24.04 LTS | linux-oracle | 6.8.0-1058.61 | USN-8574-2 |
| Ubuntu 24.04 LTS | linux-raspi | 6.8.0-1061.65 | USN-8665-1 |
| Ubuntu 24.04 LTS | linux-riscv +27 | No fix yet | — |
| Ubuntu 24.04 LTS | linux-vmware | 6.8.0-1008.8 | — |
| Ubuntu 24.04 LTS | linux-xilinx | 6.8.0-1033.34 | USN-8574-3 |
| Ubuntu 22.04 LTS | linux | 5.15.0-186.196 | USN-8575-1 |
| Ubuntu 22.04 LTS | linux-aws | 5.15.0-1112.119 | USN-8575-2 |
| Ubuntu 22.04 LTS | linux-aws-6.8 | 6.8.0-1061.64~22.04.1 | USN-8595-3 |
| Ubuntu 22.04 LTS | linux-azure +1 | 5.15.0-1117.126 | USN-8610-1, USN-8575-3 |
| Ubuntu 22.04 LTS | linux-azure-6.8 | 6.8.0-1063.71~22.04.1 | USN-8606-1 |
| Ubuntu 22.04 LTS | linux-azure-fde-6.8 | 6.8.0-1062.69~22.04.1 | USN-8609-1 |
| Ubuntu 22.04 LTS | linux-gcp | 5.15.0-1112.122 | USN-8575-1 |
| Ubuntu 22.04 LTS | linux-gcp-6.8 | 6.8.0-1064.72~22.04.1 | USN-8567-1 |
| Ubuntu 22.04 LTS | linux-gke | 5.15.0-1108.114 | USN-8575-1 |
| Ubuntu 22.04 LTS | linux-gkeop | 5.15.0-1095.103 | USN-8575-1 |
| Ubuntu 22.04 LTS | linux-hwe-6.8 | 6.8.0-136.136~22.04.1 | USN-8619-1 |
| Ubuntu 22.04 LTS | linux-ibm | 5.15.0-1106.110 | USN-8575-2 |
| Ubuntu 22.04 LTS | linux-ibm-6.8 | 6.8.0-1061.62~22.04.1 | USN-8574-3 |
| Ubuntu 22.04 LTS | linux-intel-iotg | 5.15.0-1107.113 | USN-8620-4 |
| Ubuntu 22.04 LTS | linux-kvm | 5.15.0-1104.109 | USN-8575-1 |
| Ubuntu 22.04 LTS | linux-lowlatency | 5.15.0-184.194 | USN-8575-1 |
| Ubuntu 22.04 LTS | linux-lowlatency-hwe-6.8 | 6.8.0-136.136.2~22.04.1 | USN-8574-2 |
| Ubuntu 22.04 LTS | linux-nvidia | 5.15.0-1107.108 | USN-8575-2 |
| Ubuntu 22.04 LTS | linux-nvidia-6.8 | 6.8.0-1059.62~22.04.1 | USN-8596-1 |
| Ubuntu 22.04 LTS | linux-nvidia-tegra | 5.15.0-1064.66 | USN-8576-2 |
| Ubuntu 22.04 LTS | linux-nvidia-tegra-igx | 5.15.0-1053.53 | USN-8576-2 |
| Ubuntu 22.04 LTS | linux-oracle | 5.15.0-1109.115 | USN-8575-3 |
| Ubuntu 22.04 LTS | linux-oracle-6.8 | 6.8.0-1058.61~22.04.1 | USN-8595-1 |
| Ubuntu 22.04 LTS | linux-raspi | 5.15.0-1106.109 | USN-8668-2 |
| Ubuntu 22.04 LTS | linux-riscv +32 | No fix yet | — |
| Ubuntu 22.04 LTS | linux-riscv-6.8 | 6.8.0-136.136~22.04.3 | — |
| Ubuntu 22.04 LTS | linux-xilinx-zynqmp | 5.15.0-1075.79 | USN-8575-1 |
Show 9 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 20.04 LTS | linux-gke +28 | No fix yet | — |
| Ubuntu 18.04 LTS | linux-gcp +14 | No fix yet | — |
| Ubuntu 16.04 LTS | linux-hwe-edge | No fix yet | — |
| Ubuntu Pro Realtime 24.04 LTS | linux-raspi-realtime | 6.8.0-2050.52 | USN-8665-1 |
| Ubuntu Pro Realtime 24.04 LTS | linux-realtime | 6.8.1-1056.57 | USN-8567-1 |
| Ubuntu Pro Realtime 24.04 LTS | linux-realtime-6.14 +1 | No fix yet | — |
| Ubuntu Pro Realtime 22.04 LTS | linux-intel-iot-realtime | 5.15.0-1104.106 | USN-8620-3 |
| Ubuntu Pro Realtime 22.04 LTS | linux-realtime | 5.15.0-1111.120 | USN-8575-1 |
| Ubuntu Pro Realtime 22.04 LTS | linux-realtime-6.8 | 6.8.1-1056.57~22.04.2 | USN-8567-1 |
| Ubuntu Pro FIPS-updates 24.04 LTS | linux-aws-fips | 6.8.0-1061.64+fips1 | USN-8595-3 |
| Ubuntu Pro FIPS-updates 24.04 LTS | linux-azure-fips | 6.8.0-1063.71+fips2 | USN-8608-1 |
| Ubuntu Pro FIPS-updates 24.04 LTS | linux-fips | 6.8.0-136.136+fips2 | USN-8574-2 |
| Ubuntu Pro FIPS-updates 24.04 LTS | linux-gcp-fips | 6.8.0-1064.72+fips1 | USN-8574-1 |
| Ubuntu Pro FIPS-updates 22.04 LTS | linux-aws-fips | 5.15.0-1112.119+fips1 | USN-8575-2 |
| Ubuntu Pro FIPS-updates 22.04 LTS | linux-azure-fips | 5.15.0-1117.126+fips1 | USN-8620-2 |
| Ubuntu Pro FIPS-updates 22.04 LTS | linux-fips | 5.15.0-186.196+fips1 | USN-8575-2 |
| Ubuntu Pro FIPS-updates 22.04 LTS | linux-gcp-fips | 5.15.0-1112.122+fips1 | USN-8575-1 |
| Ubuntu Pro FIPS-preview 22.04 LTS | linux-fips +3 | No fix yet | — |
| Ubuntu Pro 20.04 LTS | linux-aws-5.15 | 5.15.0-1112.119~20.04.1 | USN-8575-2 |
| Ubuntu Pro 20.04 LTS | linux-azure-5.15 | 5.15.0-1117.126~20.04.1 | USN-8620-1 |
| Ubuntu Pro 20.04 LTS | linux-azure-fde-5.15 | 5.15.0-1117.126~20.04.2 | USN-8620-1 |
| Ubuntu Pro 20.04 LTS | linux-gcp-5.15 | 5.15.0-1112.122~20.04.1 | USN-8668-1 |
| Ubuntu Pro 20.04 LTS | linux-hwe-5.15 | 5.15.0-186.196~20.04.1 | USN-8575-1 |
| Ubuntu Pro 20.04 LTS | linux-ibm-5.15 +1 | 5.15.0-1106.110~20.04.1 | USN-8597-1 |
| Ubuntu Pro 20.04 LTS | linux-intel-iotg-5.15 | 5.15.0-1107.113~20.04.1 | USN-8620-3 |
| Ubuntu Pro 20.04 LTS | linux-lowlatency-hwe-5.15 | 5.15.0-184.194~20.04.1 | USN-8575-1 |
| Ubuntu Pro 20.04 LTS | linux-nvidia-tegra-5.15 | 5.15.0-1064.66~20.04.1 | USN-8576-1 |
| Ubuntu Pro 20.04 LTS | linux-oracle-5.15 | 5.15.0-1109.115~20.04.1 | USN-8620-1 |
SUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES 15 SP7 | cephfs | 1.0-150700.15.7.1 | SUSE-SU-2026:5111-1 |
| SLES 15 SP7 | kernel-64kb +6 | 6.4.0-150700.53.66.1 | SUSE-SU-2026:2800-1 |
| SLES 15 SP7 | kernel-default-base | 6.4.0-150700.53.66.1.150700.17.39.1 | SUSE-SU-2026:2800-1 |
| SLES 15 SP7 | kernel-docs | 6.4.0-150700.53.66.2 | SUSE-SU-2026:2800-1 |
Show 4 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLE Micro 6.1 | kernel-rt +4 | 6.4.0-49.1 | SUSE-SU-2026:22666-1, SUSE-SU-2026:22665-1 |
| SLE Micro 6.0 | kernel-rt +4 | 6.4.0-49.1 | SUSE-SU-2026:22522-1, SUSE-SU-2026:22521-1 |
| SLE Live Patching 15 SP7 | kernel-default | 6.4.0-150700.53.66.1 | SUSE-SU-2026:2800-1 |
| SLE Live Patching 15 SP7 | kernel-livepatch-SLE15-SP7-RT_Update_17 | 1-150700.1.3.1 | SUSE-SU-2026:2799-1 |
| SLE Live Patching 15 SP7 | kernel-livepatch-SLE15-SP7_Update_18 | 1-150700.15.3.1 | SUSE-SU-2026:2800-1 |
| SUSE Real Time Module 15 SP7 | kernel-rt +2 | 6.4.0-150700.7.62.1 | SUSE-SU-2026:2799-1 |
Amazon Linux
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Amazon Linux 2023 | kernel-livepatch-6.18.20-20.229 +2 | 1:1.0-0.amzn2023 | ALAS2023-2026-1681, ALAS2023-2026-1596, ALAS2023-2026-1594 |
| Amazon Linux 2023 | perf +14 | 1:6.1.168-202.320.amzn2023 | ALAS2023-2026-1681 |
| Amazon Linux 2023 | perf6.12 +14 | 1:6.12.79-101.147.amzn2023 | ALAS2023-2026-1594 |
| Amazon Linux 2023 | perf6.18 +14 | 1:6.18.20-20.229.amzn2023 | ALAS2023-2026-1596 |
Oracle Linux
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Oracle Linux 9 | kernel-uek +34 | 6.12.0-204.92.4.2.el10uek | ELSA-2026-50372 |
Advisories 39
- USN-8574-2 linux-fips, linux-lowlatency, linux-lowlatency-hwe-6.8, linux-oracle vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- USN-8596-1 linux-nvidia, linux-nvidia-6.8, linux-nvidia-lowlatency vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- USN-8607-1 linux-azure-fde vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- USN-8608-1 linux-azure-fips vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- USN-8595-1 linux-oracle-6.8 vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- USN-8595-3 linux-aws-6.8, linux-aws-fips vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- USN-8609-1 linux-azure-fde-6.8 vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- USN-8595-2 linux-aws vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- USN-8574-1 linux-gcp-fips vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- USN-8574-3 linux-ibm, linux-ibm-6.8, linux-nvidia-tegra, linux-xilinx vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- USN-8619-1 linux-hwe-6.8 vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- USN-8665-1 linux-raspi, linux-raspi-realtime vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- USN-8606-1 linux-azure, linux-azure-6.8 vulnerabilities Ubuntu Security Notices (USN) · Nov 13, 2026
- WID-SEC-2026-1454 Linux Kernel: Mehrere Schwachstellen BSI CERT-Bund (WID) · Nov 12, 2026
- USN-8575-1 linux, linux-gcp, linux-gcp-fips, linux-gke, linux-gkeop, linux-hwe-5.15, linux-kvm, linux-lowlatency, linux-lowlatency-hwe-5.15, linux-realtime, linux-xilinx-zynqmp vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- USN-8575-2 linux-aws, linux-aws-5.15, linux-aws-fips, linux-fips, linux-ibm, linux-nvidia vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- USN-8620-1 linux-azure-5.15, linux-azure-fde-5.15, linux-oracle-5.15 vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- USN-8620-3 linux-intel-iot-realtime, linux-intel-iotg-5.15 vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- USN-8668-2 linux-raspi vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- USN-8610-1 linux-azure-fde vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- USN-8575-3 linux-azure, linux-oracle vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- USN-8668-1 linux-gcp-5.15 vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- USN-8576-1 linux-nvidia-tegra-5.15 vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- USN-8576-2 linux-nvidia-tegra, linux-nvidia-tegra-igx vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- USN-8620-4 linux-intel-iotg vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- USN-8620-2 linux-azure-fips vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- USN-8567-1 linux, linux-gcp, linux-gcp-6.8, linux-gke, linux-gkeop, linux-realtime, linux-realtime-6.8 vulnerabilities Ubuntu Security Notices (USN) · Nov 7, 2026
- USN-8597-1 linux-ibm-5.15 vulnerabilities Ubuntu Security Notices (USN) · Nov 7, 2026
- SUSE-SU-2026:5111-1 Security update for cephfs SUSE / openSUSE Security Updates · Nov 5, 2026
- ALAS2023-2026-1681 Important: kernel security update (Amazon Linux 2023) Amazon Linux Security Center (ALAS) · Aug 29, 2026
- SUSE-SU-2026:22666-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Jul 21, 2026
- SUSE-SU-2026:22665-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Jul 21, 2026
- SUSE-SU-2026:22521-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Jul 9, 2026
- SUSE-SU-2026:22522-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Jul 9, 2026
- SUSE-SU-2026:2799-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Jul 9, 2026
- SUSE-SU-2026:2800-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Jul 9, 2026
- ELSA-2026-50372 Important: Unbreakable Enterprise kernel security update (Oracle Linux 9) Oracle Linux Security Advisories (ELSA) · Jul 2, 2026
- ALAS2023-2026-1594 Important: kernel6.12 security update (Amazon Linux 2023) Amazon Linux Security Center (ALAS) · Jun 16, 2026
- ALAS2023-2026-1596 Important: kernel6.18 security update (Amazon Linux 2023) Amazon Linux Security Center (ALAS) · Jun 16, 2026
References
- https://git.kernel.org/stable/c/9b31e88ac5623d15c8bc46f69dfe1d3b43a8f67c
- https://git.kernel.org/stable/c/6d5fd8bb574bef039eb3b738e523870433a2aeb9
- https://git.kernel.org/stable/c/fcc477a6e8856c8a42b3c9e171724d8d6dfadd06
- https://git.kernel.org/stable/c/b3f5513141ecc6b277a8f7b7efe58a0cf9a5e859
- https://git.kernel.org/stable/c/aedd29386b23f3e1e6818943e11abfff2953732f
- https://git.kernel.org/stable/c/7db008e85a5d17b64bc5390b828bf457ae91a415
- https://git.kernel.org/stable/c/8975b85b0d45ca811ace6fac5907652f2310e5ac
- https://git.kernel.org/stable/c/ce0123cbb4a40a2f1bbb815f292b26e96088639f