CVE-2026-98413: selinux: always fill AVC decision in avc_has_perm_noaudit()
In the Linux kernel, the following vulnerability has been resolved:
selinux: always fill AVC decision in avchaspermnoaudit()
avchaspermnoaudit() is documented to return a copy of the access decision in @avd, but its early return for an empty requested permission set leaves the buffer untouched. All callers pass an uninitialized stack variable and afterwards feed it to avcaudit(), and the inode hook even stores it in the per-task decision cache.
Fill in a deny-all, audit-all decision, similar to avdinit(), so every caller receives a defined value at no cost on the hot path.
Affected Software
Event History
Frequently Asked Questions
What condition triggers the affected path?
The issue occurs when avc_has_perm_noaudit() is called with an empty requested permission set. In that early-return case, the access-decision buffer is left uninitialized even though callers later use it for auditing, and one inode hook stores it in a per-task decision cache.
What is the immediate mitigation if a kernel update cannot be applied?
The provided information does not identify a configuration change or runtime workaround. Mitigation therefore requires using a kernel containing the fix, which initializes the returned decision as deny-all and audit-all for empty permission requests.
How can I determine whether a system has the fix?
Check whether the running kernel includes the stable commits referenced for this issue. The corrected behavior is that avc_has_perm_noaudit() supplies a defined deny-all, audit-all access decision when the requested permission set is empty.