---
id: CVE-2026-98862
title: 'audit: fix exe mark UAF in kill_rules()'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  audit: fix exe mark UAF in kill_rules()

  kill_rules() removes mixed AUDIT_DIR and AUDIT_EXE rules when an audit
  tree is pruned. It drops entry->rule.exe before removing…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 34d99af52ad40bd498ba66970579a5bc1fb1a3bc <
    304960900991157e6883bdf0b39782b690545ee8
  - >-
    Linux >= 34d99af52ad40bd498ba66970579a5bc1fb1a3bc <
    88633025f20ba9c32ccdb3efc86eafdf98cb825c
  - >-
    Linux >= 34d99af52ad40bd498ba66970579a5bc1fb1a3bc <
    f2cc5462b78559c7628a9f8ac9a9592e7783183a
  - >-
    Linux >= 34d99af52ad40bd498ba66970579a5bc1fb1a3bc <
    aa650d87a498844060eecb1d336f4d46f4d1b0b3
  - Linux 4.3
published: '2026-10-18'
updated: '2026-10-18'
sourceUpdated: '2026-10-18T15:51:23.224Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-98862'
references:
  - url: 'https://git.kernel.org/stable/c/304960900991157e6883bdf0b39782b690545ee8'
  - url: 'https://git.kernel.org/stable/c/88633025f20ba9c32ccdb3efc86eafdf98cb825c'
  - url: 'https://git.kernel.org/stable/c/f2cc5462b78559c7628a9f8ac9a9592e7783183a'
  - url: 'https://git.kernel.org/stable/c/aa650d87a498844060eecb1d336f4d46f4d1b0b3'
tags:
  - cve.org
ingestedAt: '2026-10-18T16:47:32.457Z'
---

## Overview

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

audit: fix exe mark UAF in kill_rules()

kill_rules() removes mixed AUDIT_DIR and AUDIT_EXE rules when an audit
tree is pruned. It drops entry->rule.exe before removing the rule from
the RCU-visible filter lists.

After a rule has been installed with AUDIT_ADD_RULE, which requires
CAP_AUDIT_CONTROL, removing the watched directory can race with another
task that is still evaluating the rule. In that case, fsnotify can free
the executable mark before the reader reaches audit_mark_compare(),
causing a use-after-free.

KASAN reports:

    BUG: KASAN: slab-use-after-free in audit_mark_compare+0x8d/0xa0

Unlink the published rules from the RCU-visible lists and retain them
on tree->rules for cleanup. If any rule has an executable mark, wait for
a single RCU grace period before removing the marks and scheduling the
entries for freeing. Otherwise, call_rcu() already provides the required
deferred freeing without a synchronous wait.

## Affected

- `Linux >= 34d99af52ad40bd498ba66970579a5bc1fb1a3bc < 304960900991157e6883bdf0b39782b690545ee8`
- `Linux >= 34d99af52ad40bd498ba66970579a5bc1fb1a3bc < 88633025f20ba9c32ccdb3efc86eafdf98cb825c`
- `Linux >= 34d99af52ad40bd498ba66970579a5bc1fb1a3bc < f2cc5462b78559c7628a9f8ac9a9592e7783183a`
- `Linux >= 34d99af52ad40bd498ba66970579a5bc1fb1a3bc < aa650d87a498844060eecb1d336f4d46f4d1b0b3`
- `Linux 4.3`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
