Back

HIGH

nfsd: clear opcnt on compound arg release to prevent OOB read

Published Sep 11, 2026

Description

nfsd4_release_compoundargs() resets args->ops to the inline iops[8] array when the dynamically-allocated ops buffer is freed, but leaves args->opcnt at its original value (which can be up to 200 for NFSv4.1+ compounds).

If rq_status_counter is stuck at an odd value (which can happen when nfsd_dispatch() hits an error path after setting it odd), the RPC status dumpit handler reads min(opcnt, 16) entries from args->ops[]. Since iops only has 8 elements and is the last field in struct nfsd4_compoundargs, reading indices 8-15 accesses adjacent slab memory and leaks it to userspace via netlink.

Zero opcnt unconditionally in nfsd4_release_compoundargs() so stale compound metadata is never exposed through the status interface.

[ cel: Remove the kvfree_rcu_mightsleep() sleep from the exposure window ]

Affected products

Remediation

No remediation recorded yet.

References (10)

Change history (0)

No recorded changes yet.

Sources
CVE.org / MITRE
Status PUBLISHED
Assigner Linux
Published Sep 11, 2026
Updated Sep 13, 2026
Reserved Sep 11, 2026
NVD
Status Received
Modified Sep 13, 2026
Red Hat
Severity Moderate
Public date Sep 11, 2026
ENISA EUVD
Assigner Linux
Published Sep 11, 2026
Updated Sep 13, 2026
Exploited since n/a
EUVD-2026-76603