CVE-2026-99212 (GCVE-0-2026-99212)

Vulnerability from cvelistv5 – Published: 2026-10-28 10:36 – Updated: 2026-10-31 12:45
VLAI
Title
net/rds: don't let the rdma_cm destroy an id RDS still owns on route failure
Summary
In the Linux kernel, the following vulnerability has been resolved: net/rds: don't let the rdma_cm destroy an id RDS still owns on route failure rds_rdma_cm_event_handler_cmn() hands the return value of rdma_resolve_route() straight back to the rdma_cm on RDMA_CM_EVENT_ADDR_RESOLVED. A synchronous failure there - -ENOMEM from the route work allocation, an SA query that cannot be set up, a RoCE route with no usable device - makes addr_handler() destroy the id the event was delivered on. That id is ic->i_cm_id, and nothing clears the pointer: the connection sits in RDS_CONN_CONNECTING with a freed id until its shutdown calls rdma_disconnect() and rdma_destroy_id() on it. The ROUTE_RESOLVED case already avoids this: rds_ib_cm_initiate_connect() forces a zero return while ic->i_cm_id == cm_id, as the comment there explains. Do the same here - drop the connection and return 0 - so the id stays RDS's to destroy from the shutdown, and the reconnect gets a fresh one.
Assigner
Linux CNA under the mitre root
CNA scorecard D 53/100 over 6820 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea , < 664fd3205cbec71ac52c005ee705cd917bb6fb1a (git)
Affected: 55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea , < b8f141f65885810e24fc23b8a71692db62d535bf (git)
Affected: 55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea , < e677eda15df7d5ce256654343418043c7ffd6f9b (git)
Affected: 55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea , < 92143c5d80382588d5a3047a4f14023ee9ef6485 (git)
Affected: 55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea , < a7c7d0ff876377fea7ae876a28d6df8d9349df57 (git)
Affected: 55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea , < 91ece3efa064f0b3b3c67b9b045d9eeb4a034e43 (git)
Affected: 55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea , < 98d446b7c013254a8a7b49720557676a3a851fde (git)
guessed Create a notification for this product.
Linux Linux Affected: 2.6.30
Unaffected: 0 , < 2.6.30 (semver)
Unaffected: 5.15.224 , ≤ 5.15.* (semver)
Unaffected: 6.1.191 , ≤ 6.1.* (semver)
Unaffected: 6.6.161 , ≤ 6.6.* (semver)
Unaffected: 6.12.115 , ≤ 6.12.* (semver)
Unaffected: 6.18.59 , ≤ 6.18.* (semver)
Unaffected: 7.2.13 , ≤ 7.2.* (semver)
Unaffected: 7.3 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/rds/rdma_transport.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "664fd3205cbec71ac52c005ee705cd917bb6fb1a",
              "status": "affected",
              "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
              "versionType": "git"
            },
            {
              "lessThan": "b8f141f65885810e24fc23b8a71692db62d535bf",
              "status": "affected",
              "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
              "versionType": "git"
            },
            {
              "lessThan": "e677eda15df7d5ce256654343418043c7ffd6f9b",
              "status": "affected",
              "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
              "versionType": "git"
            },
            {
              "lessThan": "92143c5d80382588d5a3047a4f14023ee9ef6485",
              "status": "affected",
              "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
              "versionType": "git"
            },
            {
              "lessThan": "a7c7d0ff876377fea7ae876a28d6df8d9349df57",
              "status": "affected",
              "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
              "versionType": "git"
            },
            {
              "lessThan": "91ece3efa064f0b3b3c67b9b045d9eeb4a034e43",
              "status": "affected",
              "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
              "versionType": "git"
            },
            {
              "lessThan": "98d446b7c013254a8a7b49720557676a3a851fde",
              "status": "affected",
              "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/rds/rdma_transport.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "2.6.30"
            },
            {
              "lessThan": "2.6.30",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.224",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.191",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.161",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.115",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.59",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.13",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.224",
                  "versionStartIncluding": "2.6.30",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.191",
                  "versionStartIncluding": "2.6.30",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.161",
                  "versionStartIncluding": "2.6.30",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.115",
                  "versionStartIncluding": "2.6.30",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.59",
                  "versionStartIncluding": "2.6.30",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.13",
                  "versionStartIncluding": "2.6.30",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3",
                  "versionStartIncluding": "2.6.30",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/rds: don\u0027t let the rdma_cm destroy an id RDS still owns on route failure\n\nrds_rdma_cm_event_handler_cmn() hands the return value of\nrdma_resolve_route() straight back to the rdma_cm on\nRDMA_CM_EVENT_ADDR_RESOLVED.  A synchronous failure there - -ENOMEM\nfrom the route work allocation, an SA query that cannot be set up, a\nRoCE route with no usable device - makes addr_handler() destroy the\nid the event was delivered on.  That id is ic-\u003ei_cm_id, and nothing\nclears the pointer: the connection sits in RDS_CONN_CONNECTING with a\nfreed id until its shutdown calls rdma_disconnect() and\nrdma_destroy_id() on it.\n\nThe ROUTE_RESOLVED case already avoids this: rds_ib_cm_initiate_connect()\nforces a zero return while ic-\u003ei_cm_id == cm_id, as the comment there\nexplains.  Do the same here - drop the connection and return 0 - so\nthe id stays RDS\u0027s to destroy from the shutdown, and the reconnect\ngets a fresh one."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - An unprivileged process reaches patched rds_rdma_cm_event_handler_cmn() through AF_RDS sendmsg() \u2192 rds_connect_worker() \u2192 rds_ib_conn_path_connect() \u2192 addr_handler(). The failure occurs in local rdma_resolve_route() setup before any RDS message reaches a peer; no remote protocol message carries the trigger.\nAC:H - The synchronous error requires cma_resolve_ib_route() allocation/SA setup failure or cma_resolve_iboe_route() finding no usable netdevice or MTU. Choosing an RDS destination cannot reliably create those allocator, fabric-manager, or device states; an ordinary unreachable peer instead fails outside this ownership-error path.\nPR:L - rds_create(), rds_bind(), and rds_sendmsg() contain no capability check, and rds_ib_laddr_check() requires init_net but not root. Thus an ordinary host user can bind a configured IB/RoCE address and initiate the affected connection.\nUI:N - The attacker performs the AF_RDS sendmsg() themselves and can subsequently use RDS_CMSG_RDMA_MAP to reach __rds_rdma_map() \u2192 rds_ib_get_mr(), which dereferences the stale ic-\u003ei_cm_id. No victim action is required.\nS:U - The freed rdma_id_private and subsequent stale-pointer operations remain within the host kernel\u0027s RDS/RDMA security authority; no VM, IOMMU, or other distinct boundary is crossed.\nC:H - addr_handler() frees rdma_id_private while ic-\u003ei_cm_id retains its address, and rds_ib_get_mr() later reads qp from that reclaimed object. This kernel heap UAF permits controlled slab reuse and can be leveraged for arbitrary memory disclosure.\nI:H - If the reclaimed i_cm_id supplies a non-NULL qp, rds_ib_post_reg_frmr() passes it to ib_post_send(), reaching device operations through freed data; shutdown also calls rdma_disconnect() and rdma_destroy_id() on the stale ID. These provide control-flow and double-free corruption primitives.\nA:H - rds_ib_get_mr() can oops while reading ic-\u003ei_cm_id-\u003eqp, while rds_ib_conn_path_shutdown() later disconnects and destroys the already-freed ID. Either UAF path can panic the kernel."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-31T12:45:05.538Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/664fd3205cbec71ac52c005ee705cd917bb6fb1a"
        },
        {
          "url": "https://git.kernel.org/stable/c/b8f141f65885810e24fc23b8a71692db62d535bf"
        },
        {
          "url": "https://git.kernel.org/stable/c/e677eda15df7d5ce256654343418043c7ffd6f9b"
        },
        {
          "url": "https://git.kernel.org/stable/c/92143c5d80382588d5a3047a4f14023ee9ef6485"
        },
        {
          "url": "https://git.kernel.org/stable/c/a7c7d0ff876377fea7ae876a28d6df8d9349df57"
        },
        {
          "url": "https://git.kernel.org/stable/c/91ece3efa064f0b3b3c67b9b045d9eeb4a034e43"
        },
        {
          "url": "https://git.kernel.org/stable/c/98d446b7c013254a8a7b49720557676a3a851fde"
        }
      ],
      "title": "net/rds: don\u0027t let the rdma_cm destroy an id RDS still owns on route failure",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-99212",
    "datePublished": "2026-10-28T10:36:05.612Z",
    "dateReserved": "2026-09-25T10:25:14.401Z",
    "dateUpdated": "2026-10-31T12:45:05.538Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-99212",
      "date": "2026-11-02",
      "epss": "0.00118",
      "percentile": "0.01688"
    },
    "microsoft_vex": {
      "current_release_date": "2026-11-01T14:53:58.000Z",
      "cve": "CVE-2026-99212",
      "id": "msrc_CVE-2026-99212",
      "initial_release_date": "2026-10-29T01:08:48.000Z",
      "product_status:known_affected": "2",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "net/rds: don\u0027t let the rdma_cm destroy an id RDS still owns on route failure",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-99212.json",
      "version": "2"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "net/rds/rdma_transport.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "664fd3205cbec71ac52c005ee705cd917bb6fb1a",
                    "status": "affected",
                    "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "b8f141f65885810e24fc23b8a71692db62d535bf",
                    "status": "affected",
                    "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "e677eda15df7d5ce256654343418043c7ffd6f9b",
                    "status": "affected",
                    "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "92143c5d80382588d5a3047a4f14023ee9ef6485",
                    "status": "affected",
                    "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "a7c7d0ff876377fea7ae876a28d6df8d9349df57",
                    "status": "affected",
                    "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "91ece3efa064f0b3b3c67b9b045d9eeb4a034e43",
                    "status": "affected",
                    "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "98d446b7c013254a8a7b49720557676a3a851fde",
                    "status": "affected",
                    "version": "55b7ed0b582f9ff4bf3b9b44969cddda8c6763ea",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "net/rds/rdma_transport.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "2.6.30"
                  },
                  {
                    "lessThan": "2.6.30",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.15.*",
                    "status": "unaffected",
                    "version": "5.15.224",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.1.*",
                    "status": "unaffected",
                    "version": "6.1.191",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.6.*",
                    "status": "unaffected",
                    "version": "6.6.161",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.115",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.59",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.13",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/rds: don\u0027t let the rdma_cm destroy an id RDS still owns on route failure\n\nrds_rdma_cm_event_handler_cmn() hands the return value of\nrdma_resolve_route() straight back to the rdma_cm on\nRDMA_CM_EVENT_ADDR_RESOLVED.  A synchronous failure there - -ENOMEM\nfrom the route work allocation, an SA query that cannot be set up, a\nRoCE route with no usable device - makes addr_handler() destroy the\nid the event was delivered on.  That id is ic-\u003ei_cm_id, and nothing\nclears the pointer: the connection sits in RDS_CONN_CONNECTING with a\nfreed id until its shutdown calls rdma_disconnect() and\nrdma_destroy_id() on it.\n\nThe ROUTE_RESOLVED case already avoids this: rds_ib_cm_initiate_connect()\nforces a zero return while ic-\u003ei_cm_id == cm_id, as the comment there\nexplains.  Do the same here - drop the connection and return 0 - so\nthe id stays RDS\u0027s to destroy from the shutdown, and the reconnect\ngets a fresh one."
          }
        ],
        "id": "CVE-2026-99212",
        "lastModified": "2026-10-31T13:17:59.453",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "HIGH",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.0,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.0,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-10-28T11:17:42.650",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/664fd3205cbec71ac52c005ee705cd917bb6fb1a"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/91ece3efa064f0b3b3c67b9b045d9eeb4a034e43"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/92143c5d80382588d5a3047a4f14023ee9ef6485"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/98d446b7c013254a8a7b49720557676a3a851fde"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/a7c7d0ff876377fea7ae876a28d6df8d9349df57"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/b8f141f65885810e24fc23b8a71692db62d535bf"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/e677eda15df7d5ce256654343418043c7ffd6f9b"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-10-31T15:46:09+00:00",
      "cve": "CVE-2026-99212",
      "id": "CVE-2026-99212",
      "initial_release_date": "2026-10-28T00:00:00+00:00",
      "product_status:known_affected": "14",
      "product_status:known_not_affected": "265",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: net/rds: don\u0027t let the rdma_cm destroy an id RDS still owns on route failure",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-99212.json",
      "version": "3"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    Loading…

    Loading…

    Related by attack behaviour

    Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.