---
id: CVE-2026-46115
title: 'block: add pgmap check to biovec_phys_mergeable'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  block: add pgmap check to biovec_phys_mergeable

  biovec_phys_mergeable() is used by the request merge, DMA mapping,
  and integrity merge paths to decide if two physicall…
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'
cvssSource: cna
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 49580e690755d0e51ed7aa2c33225dd884fa738a <
    3d2ecbd444b01d6500671d1a582b7393943cf539
  - >-
    Linux >= 49580e690755d0e51ed7aa2c33225dd884fa738a <
    a7f3aa8c9df3905fe820ae36b67ba56b81587574
  - >-
    Linux >= 49580e690755d0e51ed7aa2c33225dd884fa738a <
    f17d521075325b8afc42d1baa1c28a5e9aca111f
  - >-
    Linux >= 49580e690755d0e51ed7aa2c33225dd884fa738a <
    f632dab4b841554cd6416058c61886d7db176581
  - >-
    Linux >= 49580e690755d0e51ed7aa2c33225dd884fa738a <
    13920e4b7b784b40cf4519ff1f0f3e513476a499
  - Linux 6.2
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: total
  timestamp: '2026-10-16T15:19:51.570343Z'
published: '2026-05-28'
updated: '2026-10-16'
sourceUpdated: '2026-10-16T15:20:51.704Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-46115'
references:
  - url: 'https://git.kernel.org/stable/c/3d2ecbd444b01d6500671d1a582b7393943cf539'
  - url: 'https://git.kernel.org/stable/c/a7f3aa8c9df3905fe820ae36b67ba56b81587574'
  - url: 'https://git.kernel.org/stable/c/f17d521075325b8afc42d1baa1c28a5e9aca111f'
  - url: 'https://git.kernel.org/stable/c/f632dab4b841554cd6416058c61886d7db176581'
  - url: 'https://git.kernel.org/stable/c/13920e4b7b784b40cf4519ff1f0f3e513476a499'
tags:
  - cve.org
epss: 0.00491
epssPercentile: 0.40779
ingestedAt: '2026-10-16T17:24:46.706Z'
---

## Overview

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

block: add pgmap check to biovec_phys_mergeable

biovec_phys_mergeable() is used by the request merge, DMA mapping,
and integrity merge paths to decide if two physically contiguous
bvec segments can be coalesced into one. It currently has no check
for whether the segments belong to different dev_pagemaps.

When zone device memory is registered in multiple chunks, each chunk
gets its own dev_pagemap. A single bio can legitimately contain
bvecs from different pgmaps -- iov_iter_extract_bvecs() breaks at
pgmap boundaries but the outer loop in bio_iov_iter_get_pages()
continues filling the same bio. If such bvecs are physically
contiguous, biovec_phys_mergeable() will coalesce them, making it
impossible to recover the correct pgmap for the merged segment
via page_pgmap().

Add a zone_device_pages_have_same_pgmap() check to prevent merging
bvec segments that span different pgmaps.

## Affected

- `Linux >= 49580e690755d0e51ed7aa2c33225dd884fa738a < 3d2ecbd444b01d6500671d1a582b7393943cf539`
- `Linux >= 49580e690755d0e51ed7aa2c33225dd884fa738a < a7f3aa8c9df3905fe820ae36b67ba56b81587574`
- `Linux >= 49580e690755d0e51ed7aa2c33225dd884fa738a < f17d521075325b8afc42d1baa1c28a5e9aca111f`
- `Linux >= 49580e690755d0e51ed7aa2c33225dd884fa738a < f632dab4b841554cd6416058c61886d7db176581`
- `Linux >= 49580e690755d0e51ed7aa2c33225dd884fa738a < 13920e4b7b784b40cf4519ff1f0f3e513476a499`
- `Linux 6.2`

## Remediation

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