{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2026-89510",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2026-89510"
  ],
  "published": "2026-09-11T19:47:07Z",
  "summary": "RDMA/cxgb4: Cancel reg_work before freeing device on remove",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nRDMA/cxgb4: Cancel reg_work before freeing device on remove\n\nc4iw_uld_state_change() queues reg_work to register the RDMA device.\nc4iw_remove() can free ctx->dev while this work is pending or running,\nleaving c4iw_register_device() accessing the freed device.\n\nCancel reg_work before removing the device.  The registration work can\ntear down ctx->dev when registration fails, so do not unregister or\ndeallocate it again in that case.\n\nThis issue was found by an in-house static analysis tool.",
  "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.188",
            "compiled_filter": false
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2026-89510"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/e6e79e7be87c5ea92728060a3d7fb56890a91e45"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/672ee1981db10569ec96030bddb322f18382ec04"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/4681e731db07769846901cfabdd3e53f765eb9d3"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/3265d558dfafab8f12f5fba06ebbf15cae9f3225"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/fe9c591026c576d8b1f72aab5e4cd67350530763"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/85f438382a865a4dc4c50e6b884310bb2b60fc4d"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/320e5258a53af0abc5abd9eb01519a48bab2dee8"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/a7100601aa1a39f799a566acce10db20eaf4b7f2"
    }
  ],
  "database_specific": {
    "source": "https://git.kernel.org/pub/scm/linux/security/vulns.git",
    "upstream_modified": "2026-09-14T12:06:03Z",
    "severity": {
      "source": "kernel CNA",
      "cvss_v3_score": 7.8,
      "cvss_v3_severity": "High",
      "scenario": "AV:L - The UAF is reached from c4iw_remove() on local Chelsio T4/T5/T6 RDMA teardown (iw_cxgb4 rmmod, PCI sysfs unbind/hot-remove, EEH reset, or ULD STATE_DOWN/DETACH/FATAL). reg_work is queued from local STATE_UP (cxgb_open/uld_attach), not from c4iw_uld_rx_handler packet processing.\nAC:L - An attacker queues c4iw_register_device via STATE_UP (first cxgb_open or iw_cxgb4 load) then immediately runs c4iw_remove via unbind/rmmod/EEH, controlling both sides of the missing cancel_work_sync race and retrying bind/unbind until the worker uses freed ctx->dev; such UAFs score AC:L.\nPR:L - Per CNA driver-removal UAF precedent, an unprivileged local user on Chelsio iWARP/HPC hosts can spray the freed c4iw_dev/ib_device while privileged or automated teardown proceeds; init-namespace root is not required for the UAF itself.\nUI:N - No victim action such as mounting a filesystem or opening a file is required; the attacker queues reg_work and coordinates driver removal themselves, or piggybacks on routine PCI/module teardown.\nS:U - The use-after-free corrupts the host kernel c4iw_dev/ib_device heap object within the same security authority; it is not a VM escape, IOMMU/DMA isolation bypass, or sandbox breakout.\nC:H - After c4iw_dealloc()/ib_dealloc_device(), c4iw_register_device() still reads ctx->dev (node_guid, ports, ibdev ops) from the freed ib_device; this kernel heap UAF enables arbitrary disclosure via slab reuse.\nI:H - The dangling worker writes ibdev fields, may call ib_register_device() on freed memory, and can double-free via c4iw_dealloc(); heap spraying the ib_device ops table yields write and control-flow hijack primitives.\nA:H - Use-after-free of c4iw_dev from workqueue context during remove causes a kernel oops or panic even when not fully exploited, so availability impact is High."
    }
  }
}
