CVE-2026-89600: fanotify: fix use-after-free of file range info

Published Sep 11, 2026
·
Updated

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

fanotify: fix use-after-free of file range info

fsnotifyprecontent() builds its filerange on the triggering task's stack. fanotifyallocpermevent() saves a pointer to range.pos in the heap-allocated permission event so copyrangeinfotouser() can report the offset later.

The event reader can set the event state to FANEVENTREPORTED and then sleep while preparing the file descriptor. If a signal interrupts the triggering task at that point, fanotifygetresponse() changes the state to FANEVENTCANCELED and returns. This unwinds the filerange stack frame while the reader still owns the event. The reader then dereferences pevent->ppos and copies the stale stack value to userspace.

KASAN reported:

BUG: KASAN: use-after-free in fanotifyread+0x293e/0x2970 Read of size 8 at addr ffff88811434fc50 by task fanotifyinotif/95 Call Trace: fanotifyread+0x293e/0x2970 vfsread+0x177/0xa20 ksysread+0xf7/0x1c0 dosyscall64+0xf9/0x540 entrySYSCALL64afterhwframe+0x77/0x7f

Store the range position directly in the permission event and use FANOTIFYNORANGE when range information is unavailable. The event remains alive until the reader finishes, so the reported offset no longer depends on the triggering task's stack.

Affected Software

1 affected component
Linux Linux kernel

Event History

Sep 11, 2026
CVE Published
via MITRE·07:45 PM
Data Sourced
via MITRE·07:45 PM
Description

Frequently Asked Questions

1

What circumstances are required to trigger the flaw?

A fanotify permission event must be read while the event reader is preparing the file descriptor, and the triggering task must be interrupted by a signal during that window. The interruption cancels the event and unwinds the stack frame containing the file-range information while the reader still holds the event.

2

How can I identify evidence of this issue?

KASAN can report a use-after-free in fanotify_read, with a read of size 8 and a call trace including fanotify_read, vfs_read, ksys_read, and do_syscall_64. The stale value is accessed when the reader dereferences the saved range-position pointer.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203