---
id: CVE-2026-74354
title: 'bpf: Take mmap_lock in zap_pages()'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  bpf: Take mmap_lock in zap_pages()

  zap_vma_range() requires the owning mm's mmap_lock to be held.

  Taking mmap_read_lock under arena->lock would AB-BA against
  arena_vm…
severity: high
cvss: 7.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'
cvssSource: cna
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 317460317a02a1af512697e6e964298dedd8a163 <
    36b1d997866f6083d33934983aa2ce0a184ed642
  - >-
    Linux >= 317460317a02a1af512697e6e964298dedd8a163 <
    80b89d0226a05e8b67969de99c31b51fcd54f76a
  - Linux 6.9
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: total
  timestamp: '2026-10-16T18:54:18.946852Z'
published: '2026-08-15'
updated: '2026-10-16'
sourceUpdated: '2026-10-16T18:55:34.866Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-74354'
references:
  - url: 'https://git.kernel.org/stable/c/36b1d997866f6083d33934983aa2ce0a184ed642'
  - url: 'https://git.kernel.org/stable/c/80b89d0226a05e8b67969de99c31b51fcd54f76a'
tags:
  - cve.org
epss: 0.00165
epssPercentile: 0.05348
ingestedAt: '2026-10-16T19:46:24.375Z'
---

## Overview

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

bpf: Take mmap_lock in zap_pages()

zap_vma_range() requires the owning mm's mmap_lock to be held.

Taking mmap_read_lock under arena->lock would AB-BA against
arena_vm_close() and arena_map_mmap(), both of which run with
mmap_write_lock held and then acquire arena->lock. Instead drop
arena->lock, mmget_not_zero() the vma's mm, take mmap_read_lock, and
re-resolve the vma via find_vma() since it may have been unmapped or
replaced while waiting.

Track processed vmls with a per-call generation in vml->zap_gen and
serialize zap_pages() callers with a new arena->zap_mutex so
concurrent callers on different uaddr ranges do not mark each other's
vmls processed before the zap is done.

## Affected

- `Linux >= 317460317a02a1af512697e6e964298dedd8a163 < 36b1d997866f6083d33934983aa2ce0a184ed642`
- `Linux >= 317460317a02a1af512697e6e964298dedd8a163 < 80b89d0226a05e8b67969de99c31b51fcd54f76a`
- `Linux 6.9`

## Remediation

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