Use of Out-of-range Pointer Offset Affecting kernel-uki-virt package, versions *


Severity

Recommended
medium

Based on Red Hat Enterprise Linux security rating.

Threat Intelligence

EPSS
0.38% (30th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk IDSNYK-RHEL10-KERNELUKIVIRT-20031427
  • published22 Sept 2026
  • disclosed11 Sept 2026

Introduced: 11 Sep 2026

NewCVE-2026-89678  (opens in a new tab)
CWE-823  (opens in a new tab)

How to fix?

There is no fixed version for RHEL:10 kernel-uki-virt.

NVD Description

Note: Versions mentioned in the description apply only to the upstream kernel-uki-virt package and not the kernel-uki-virt package as distributed by RHEL. See How to fix? for RHEL:10 relevant fixed versions and status.

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

nfsd: fix partial-write detection in nfsd_direct_write

nfsd_direct_write() walks a list of write segments and, after each vfs_iocb_iter_write(), tries to detect a short write so the loop can stop before placing the next segment at a wrong file offset:

host_err = vfs_iocb_iter_write(file, kiocb, &segments[i].iter);
if (host_err < 0)
        return host_err;
*cnt += host_err;
if (host_err < segments[i].iter.count)
        break;	/* partial write */

vfs_iocb_iter_write() runs the iter through ->write_iter(), which advances the iter by the number of bytes written. By the time the check runs, segments[i].iter.count is the residual, not the original request length:

before write_iter: iter.count == original_len
after  write_iter: iter.count == original_len - host_err

The condition then reduces to host_err < original_len - host_err, so the break fires only when less than half of the segment was written. Any short write completing between 50% and 99% of the segment slips through; the loop advances to the next segment with kiocb->ki_pos only bumped by the short amount, writing the next segment's payload at the wrong offset and over-reporting *cnt to the NFS client.

Snapshot the segment's byte count before the write and compare host_err against that snapshot so any short write breaks the loop.

CVSS Base Scores

version 3.1