{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2026-45852",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2026-45852"
  ],
  "published": "2026-05-27T12:19:29Z",
  "summary": "RDMA/rxe: Fix double free in rxe_srq_from_init",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nRDMA/rxe: Fix double free in rxe_srq_from_init\n\nIn rxe_srq_from_init(), the queue pointer 'q' is assigned to\n'srq->rq.queue' before copying the SRQ number to user space.\nIf copy_to_user() fails, the function calls rxe_queue_cleanup()\nto free the queue, but leaves the now-invalid pointer in\n'srq->rq.queue'.\n\nThe caller of rxe_srq_from_init() (rxe_create_srq) eventually\ncalls rxe_srq_cleanup() upon receiving the error, which triggers\na second rxe_queue_cleanup() on the same memory, leading to a\ndouble free.\n\nThe call trace looks like this:\n   kmem_cache_free+0x.../0x...\n   rxe_queue_cleanup+0x1a/0x30 [rdma_rxe]\n   rxe_srq_cleanup+0x42/0x60 [rdma_rxe]\n   rxe_elem_release+0x31/0x70 [rdma_rxe]\n   rxe_create_srq+0x12b/0x1a0 [rdma_rxe]\n   ib_create_srq_user+0x9a/0x150 [ib_core]\n\nFix this by moving 'srq->rq.queue = q' after copy_to_user.",
  "severity": [
    {
      "type": "CVSS_V3",
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "Raspberry Pi OS:12",
        "name": "linux"
      },
      "versions": [
        "1:6.1.47-1+rpt4"
      ],
      "ecosystem_specific": {
        "binaries": [
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-2712",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v6",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7l",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v8",
            "binary_version": "1:6.1.47-1+rpt4"
          }
        ]
      },
      "database_specific": {
        "per_version": {
          "1:6.1.47-1+rpt4": {
            "linux_commit": "655fc658a15ae7a6f37103754adb39ba52a9a14e",
            "upstream_version": "6.1.47",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": "6.1.176",
            "compiled_filter": false
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2026-45852"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/b98ab5494dbd48652561aa0b9c32f10500220745"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/d493e0bfc748a520c349d6c8791b262aa5ad2e4e"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/9abff51163aa1bc275ec356f74fe976291860a7f"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/26793db60925df1e88a29466813d586cbc190b8c"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/ce6f8e007682f378279d4cf83b240f12d52c723b"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/5c07aef09a121a4cd622a71eb0753a9e135c84a8"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/26a9cfe12f4ffdeaa136f252478986fa5f397ddc"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/0beefd0e15d962f497aad750b2d5e9c3570b66d1"
    }
  ],
  "database_specific": {
    "source": "https://git.kernel.org/pub/scm/linux/security/vulns.git",
    "upstream_modified": "2026-08-05T13:16:28Z",
    "severity": {
      "source": "kernel CNA",
      "cvss_v3_score": 7.8,
      "cvss_v3_severity": "High",
      "scenario": "AV:L - The bug is triggered through the RDMA uverbs character device (/dev/infiniband/uverbsN) via a local write()/ioctl() syscall during SRQ creation; it is not reachable from network packets, as rxe SRQ creation is a purely local control-plane operation.\nAC:L - The attacker fully controls the trigger by supplying a bad userspace outbuf pointer so copy_to_user() faults deterministically; no race or attacker-uncontrolled condition is involved.\nPR:L - Reaching ib_create_srq_user requires access to the RDMA verbs device, which by design is used by unprivileged applications and is commonly exposed to regular users in RDMA-enabled (HPC/cloud) deployments; no real root is needed.\nUI:N - The attacker's own process performs the offending verbs call; no separate victim action is required.\nS:U - The corruption is confined to kernel heap memory within the same security authority; no VM/IOMMU/sandbox boundary is crossed.\nC:H - The double-free/UAF lets the attacker reallocate and control the freed queue object's contents, yielding an arbitrary kernel-memory read primitive for information disclosure.\nI:H - Double-free of a kmalloc'd object enables heap grooming and reallocation into attacker-controlled structures, providing a write primitive that can be leveraged for control-flow hijacking.\nA:H - The double free reliably corrupts the slab allocator and crashes the kernel (panic/oops)."
    }
  }
}
