Skip to content
Heist/ feed
Back to feed
CriticalFix available

block: add pgmap check to biovec_phys_mergeable

Type: advisorySources: OSV

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.

Products
Kernel
Affected versions
Not specified
Fixed versions
6.12.88, 6.18.30, 6.6.140, 7.0.7
CVEs
CVE-2026-46115
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 16:14 UTC · Revision 1

Source evidence

block: add pgmap check to biovec_phys_mergeable

core-osv · Original source

Published 28 May 2026, 09:35 UTC

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.

osv:CVE-2026-46115

Kernel

Fixed versions: 6.6.140, 6.12.88, 6.18.30, 7.0.7

Complete source record
{
  "id": "4b975b0c8267404aea0f7403b10aa9d8da6fc439774003b77344a543d77f39e6",
  "url": "https://osv.dev/vulnerability/CVE-2026-46115",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "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 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.",
    "evidence": "osv:CVE-2026-46115",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "6.6.140",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.88",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.18.30",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "7.0.7",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "critical",
    "structured": {
      "id": "CVE-2026-46115",
      "aliases": [
        "CVE-2026-46115"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "49580e690755d0e51ed7aa2c33225dd884fa738a"
                },
                {
                  "fixed": "3d2ecbd444b01d6500671d1a582b7393943cf539"
                },
                {
                  "fixed": "a7f3aa8c9df3905fe820ae36b67ba56b81587574"
                },
                {
                  "fixed": "f17d521075325b8afc42d1baa1c28a5e9aca111f"
                },
                {
                  "fixed": "f632dab4b841554cd6416058c61886d7db176581"
                },
                {
                  "fixed": "13920e4b7b784b40cf4519ff1f0f3e513476a499"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-46115.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.140"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.12.88"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.13.0"
                },
                {
                  "fixed": "6.18.30"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.19.0"
                },
                {
                  "fixed": "7.0.7"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-46115.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:30.083035661Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/13920e4b7b784b40cf4519ff1f0f3e513476a499",
        "https://git.kernel.org/stable/c/3d2ecbd444b01d6500671d1a582b7393943cf539",
        "https://git.kernel.org/stable/c/a7f3aa8c9df3905fe820ae36b67ba56b81587574",
        "https://git.kernel.org/stable/c/f17d521075325b8afc42d1baa1c28a5e9aca111f",
        "https://git.kernel.org/stable/c/f632dab4b841554cd6416058c61886d7db176581",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/46xxx/CVE-2026-46115.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-46115",
        "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
      ],
      "provider_metadata": {
        "cna_assigner": "Linux",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/46xxx/CVE-2026-46115.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-46115",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 497210,
  "published_at": "2026-05-28T09:35:26.735+00:00"
}