---
id: CVE-2026-64397
title: |-
  In the Linux kernel, the following vulnerability has been resolved:

  ksmbd: serialize QUERY_DIRECTORY requests per file

  smb2_query_dir() stores a pointer to its stack-allocated private data in
  the ksmbd_file readdir_data
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  ksmbd: serialize QUERY_DIRECTORY requests per file

  smb2_query_dir() stores a pointer to its stack-allocated private data in
  the ksmbd_file readdir_data. Concurrent QUE…
severity: critical
cvss: 9.8
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'
cwe:
  - CWE-416
vendor: linux
product: linux_kernel
affected:
  - 'linux_kernel >= 5.15, < 6.1.178'
  - 'linux_kernel >= 6.2, < 6.6.145'
  - 'linux_kernel >= 6.7, < 6.12.96'
  - 'linux_kernel >= 6.13, < 6.18.39'
  - 'linux_kernel >= 6.19, < 7.1.4'
patched:
  - linux_kernel 7.1.4
published: '2026-07-25'
updated: '2026-09-04'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-64397'
references:
  - url: 'https://git.kernel.org/stable/c/1426fd79102539bc0ab5c8fced047ad4313b9908'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/2a64dbf9c739ddf7a25a066507597bf89f8f73d2'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/64dac2d486ec1eb18dc00968b16a230b6b75ec24'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/a1d5d31cad593ea5e1b637f2f39c9ef6d09d1199'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/be6d26bf27499977c746abc163659915082348d8'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/fd22b039a5a05bc1d6818e9dcd1001fb432a829d'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
epss: 0.00477
epssPercentile: 0.40374
ingestedAt: '2026-09-05T13:39:57.732Z'
---

## Overview

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

ksmbd: serialize QUERY_DIRECTORY requests per file

smb2_query_dir() stores a pointer to its stack-allocated private data in
the ksmbd_file readdir_data. Concurrent QUERY_DIRECTORY requests using the
same file handle can overwrite this pointer while an iterate_dir() callback
is still using it, resulting in a stack use-after-free.

Add a per-file mutex and hold it while accessing the shared directory
enumeration state. The lock covers scan restart, dot entry state,
readdir_data setup and iteration, and response construction. This prevents
another request from replacing readdir_data.private before the current
request has finished using it and also serializes the shared file position.

## Affected

- `linux_kernel >= 5.15, < 6.1.178`
- `linux_kernel >= 6.2, < 6.6.145`
- `linux_kernel >= 6.7, < 6.12.96`
- `linux_kernel >= 6.13, < 6.18.39`
- `linux_kernel >= 6.19, < 7.1.4`

## Remediation

Upgrade past the affected range:

- `linux_kernel 7.1.4`
