CVE-2026-90176

Summary

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

ksmbd: Do not skip lock checks for single-byte ranges

check_lock_range() uses inclusive ranges. Its callers pass the end offset as start + length - 1, so start == end represents a valid single-byte range rather than an empty range.

The start == end shortcut therefore skips mandatory byte-range lock checks for one-byte reads, writes, copychunk operations and one-byte truncate ranges. A conflicting lock covering that byte is not checked and the operation is allowed to proceed.

Remove the shortcut. The truncate size == inode->i_size case is already handled by only calling check_lock_range() when the new size differs from the current file size.

Affected Software

VendorProductVersion RangeStatus
LinuxLinux52fcbb92e0d3acfd1448b2a43b6595d540da5295 < a89cc145832e81c32199d4ca2e1ea8bd51ed601daffected
LinuxLinuxda29cd197246c85c0473259f1cad897d9d28faea < 993e0158331d37c04da18efe551b5e1e35fb3078affected
LinuxLinuxa6f4cfa3783804336491e0edcb250c25f9b59d33 < f751d6e39d4c937c45f8fedc66699aa7d2d52288affected
LinuxLinux571204e4758a528fbd67330bd4b0dfbdafb33dd8 < 84c2d8e807ac489f5c91769293fb15dfdae8bae8affected
LinuxLinux5d510ac31626ed157d2182149559430350cf2104 < 07a9e289ff7edcc004f58952405f8a65c4e37512affected
LinuxLinux5d510ac31626ed157d2182149559430350cf2104 < d40c24634fe077a0dc91fd11fccf44ce12b454d5affected
LinuxLinux6.1.160 < 6.1.188affected
LinuxLinux6.6.120 < 6.6.157affected
LinuxLinux6.12.64 < 6.12.110affected
LinuxLinux6.18.3 < 6.18.52affected
LinuxLinux6.19affected
LinuxLinux0 < 6.19unaffected
LinuxLinux6.1.188 <= 6.1.*unaffected
LinuxLinux6.6.157 <= 6.6.*unaffected
LinuxLinux6.12.110 <= 6.12.*unaffected
LinuxLinux6.18.52 <= 6.18.*unaffected
LinuxLinux7.2.6 <= 7.2.*unaffected
LinuxLinux7.3-rc1 <= *unaffected

Weaknesses

References