Skip to content
Heist/ feed
Back to feed
HighFix available

ksmbd: Fix race condition in RPC handle list access

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: ksmbd: Fix race condition in RPC handle list access The 'sess->rpc_handle_list' XArray manages RPC handles within a ksmbd session. Access to this list is intended to be protected by 'sess->rpc_lock' (an rw_semaphore). However, the locking implementation was flawed, leading to potential race conditions. In ksmbd_session_rpc_open(), the code incorrectly acquired only a read lock before calling xa_store() and xa_erase(). Since these operations modify the XArray structure, a write lock is required to ensure exclusive access and prevent data corruption from concurrent modifications. Furthermore, ksmbd_session_rpc_method() accessed the list using xa_load() without holding any lock at all. This could lead to reading inconsistent data or a potential use-after-free if an entry is concurrently removed and the pointer is dereferenced. Fix these issues by: 1. Using down_write() and up_write() in ksmbd_session_rpc_open() to ensure exclusive access during XArray modification, and ensuring the lock is correctly released on error paths. 2. Adding down_read() and up_read() in ksmbd_session_rpc_method() to safely protect the lookup.

Products
Kernel
Affected versions
Not specified
Fixed versions
6.12.53, 6.17.3, 6.6.123
CVEs
CVE-2025-40039
Confirmed fixed CVEs
Not specified
Updated in this feed
7 Nov 2026, 01:42 UTC · Revision 1

Source evidence

ksmbd: Fix race condition in RPC handle list access

core-osv · Original source

Published 28 Oct 2025, 11:48 UTC

In the Linux kernel, the following vulnerability has been resolved: ksmbd: Fix race condition in RPC handle list access The 'sess->rpc_handle_list' XArray manages RPC handles within a ksmbd session. Access to this list is intended to be protected by 'sess->rpc_lock' (an rw_semaphore). However, the locking implementation was flawed, leading to potential race conditions. In ksmbd_session_rpc_open(), the code incorrectly acquired only a read lock before calling xa_store() and xa_erase(). Since these operations modify the XArray structure, a write lock is required to ensure exclusive access and prevent data corruption from concurrent modifications. Furthermore, ksmbd_session_rpc_method() accessed the list using xa_load() without holding any lock at all. This could lead to reading inconsistent data or a potential use-after-free if an entry is concurrently removed and the pointer is dereferenced. Fix these issues by: 1. Using down_write() and up_write() in ksmbd_session_rpc_open() to ensure exclusive access during XArray modification, and ensuring the lock is correctly released on error paths. 2. Adding down_read() and up_read() in ksmbd_session_rpc_method() to safely protect the lookup.

osv:CVE-2025-40039

Kernel

Fixed versions: 6.6.123, 6.12.53, 6.17.3

Complete source record
{
  "id": "5ba18f2bc7815cf15fda1a0205b1c54f754a4698cca79e049cf3611b49ac39a4",
  "url": "https://osv.dev/vulnerability/CVE-2025-40039",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "ksmbd: Fix race condition in RPC handle list access",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: ksmbd: Fix race condition in RPC handle list access The 'sess->rpc_handle_list' XArray manages RPC handles within a ksmbd session. Access to this list is intended to be protected by 'sess->rpc_lock' (an rw_semaphore). However, the locking implementation was flawed, leading to potential race conditions. In ksmbd_session_rpc_open(), the code incorrectly acquired only a read lock before calling xa_store() and xa_erase(). Since these operations modify the XArray structure, a write lock is required to ensure exclusive access and prevent data corruption from concurrent modifications. Furthermore, ksmbd_session_rpc_method() accessed the list using xa_load() without holding any lock at all. This could lead to reading inconsistent data or a potential use-after-free if an entry is concurrently removed and the pointer is dereferenced. Fix these issues by: 1. Using down_write() and up_write() in ksmbd_session_rpc_open() to ensure exclusive access during XArray modification, and ensuring the lock is correctly released on error paths. 2. Adding down_read() and up_read() in ksmbd_session_rpc_method() to safely protect the lookup.",
    "evidence": "osv:CVE-2025-40039",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "6.6.123",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.53",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.17.3",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "high",
    "structured": {
      "id": "CVE-2025-40039",
      "aliases": [
        "CVE-2025-40039"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/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": "a4348710a7267705b75692dc1a000920481d1d92"
                },
                {
                  "fixed": "69674b029002b1d90b655f014bdf64f404efa54d"
                }
              ]
            },
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "b685757c7b08d5073046fb379be965fd6c06aafc"
                },
                {
                  "fixed": "6b615a8fb3af0baf8126cde3d4fee97d57222ffc"
                },
                {
                  "fixed": "5cc679ba0f4505936124cd4179ba66bb0a4bd9f3"
                },
                {
                  "fixed": "6bd7e0e55dcea2cf0d391bbc21c2eb069b4be3e1"
                },
                {
                  "fixed": "305853cce379407090a73b38c5de5ba748893aee"
                }
              ]
            },
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "5.15.145"
                },
                {
                  "fixed": "5.16"
                }
              ]
            },
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "1f485b54d04a920723984062c912174330a05178"
                }
              ]
            },
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "052b41ef2abe274f068e892aee81406f11bd1f3a"
                }
              ]
            }
          ],
          "versions": [
            "v5.15.223",
            "v5.15.222",
            "v5.15.221",
            "v5.15.220",
            "v5.15.219",
            "v5.15.218",
            "v5.15.217",
            "v5.15.216",
            "v5.15.215",
            "v5.15.214",
            "v5.15.213",
            "v5.15.212",
            "v5.15.211",
            "v5.15.210",
            "v5.15.209",
            "v5.15.208",
            "v5.15.207",
            "v5.15.206",
            "v5.15.205",
            "v5.15.204",
            "v5.15.203",
            "v5.15.202",
            "v5.15.201",
            "v5.15.200",
            "v5.15.199",
            "v5.15.198",
            "v5.15.197",
            "v5.15.196",
            "v5.15.195",
            "v5.15.194",
            "v5.15.193",
            "v5.15.192",
            "v5.15.191",
            "v5.15.190",
            "v5.15.189",
            "v5.15.188",
            "v5.15.187",
            "v5.15.186",
            "v5.15.185",
            "v5.15.184",
            "v5.15.183",
            "v5.15.182",
            "v5.15.181",
            "v5.15.180",
            "v5.15.179",
            "v5.15.178",
            "v5.15.177",
            "v5.15.176",
            "v5.15.175",
            "v5.15.174",
            "v5.15.173",
            "v5.15.172",
            "v5.15.171",
            "v5.15.170",
            "v5.15.169",
            "v5.15.168",
            "v5.15.167",
            "v5.15.166",
            "v5.15.165",
            "v5.15.164",
            "v5.15.163",
            "v5.15.162",
            "v5.15.161",
            "v5.15.160",
            "v5.15.159",
            "v5.15.158",
            "v5.15.157",
            "v5.15.156",
            "v5.15.155",
            "v5.15.154",
            "v5.15.153",
            "v5.15.152",
            "v5.15.151",
            "v5.15.150",
            "v5.15.149",
            "v5.15.148",
            "v5.15.147",
            "v5.15.146",
            "v5.15.145",
            "v6.1.190",
            "v6.1.189",
            "v6.1.188",
            "v6.1.187",
            "v6.1.186",
            "v6.1.185",
            "v6.1.184",
            "v6.1.183",
            "v6.1.182",
            "v6.1.181",
            "v6.1.180",
            "v6.1.179",
            "v6.1.178",
            "v6.1.177",
            "v6.1.176",
            "v6.1.175",
            "v6.1.174",
            "v6.1.173",
            "v6.1.172",
            "v6.1.171",
            "v6.1.170",
            "v6.1.169",
            "v6.1.168",
            "v6.1.167",
            "v6.1.166",
            "v6.1.165",
            "v6.1.164",
            "v6.1.163",
            "v6.1.162",
            "v6.1.161",
            "v6.1.160",
            "v6.1.159",
            "v6.1.158",
            "v6.1.157",
            "v6.1.156",
            "v6.1.155",
            "v6.1.154",
            "v6.1.153",
            "v6.1.152",
            "v6.1.151",
            "v6.1.150",
            "v6.1.149",
            "v6.1.148",
            "v6.1.147",
            "v6.1.146",
            "v6.1.145",
            "v6.1.144",
            "v6.1.143",
            "v6.1.142",
            "v6.1.141",
            "v6.1.140",
            "v6.1.139",
            "v6.1.138",
            "v6.1.137",
            "v6.1.136",
            "v6.1.135",
            "v6.1.134",
            "v6.1.133",
            "v6.1.132",
            "v6.1.131",
            "v6.1.130",
            "v6.1.129",
            "v6.1.128",
            "v6.1.127",
            "v6.1.126",
            "v6.1.125",
            "v6.1.124",
            "v6.1.123",
            "v6.1.122",
            "v6.1.121",
            "v6.1.120",
            "v6.1.119",
            "v6.1.118",
            "v6.1.117",
            "v6.1.116",
            "v6.1.115",
            "v6.1.114",
            "v6.1.113",
            "v6.1.112",
            "v6.1.111",
            "v6.1.110",
            "v6.1.109",
            "v6.1.108",
            "v6.1.107",
            "v6.1.106",
            "v6.1.105",
            "v6.1.104",
            "v6.1.103",
            "v6.1.102",
            "v6.1.101",
            "v6.1.100",
            "v6.1.99",
            "v6.1.98",
            "v6.1.97",
            "v6.1.96",
            "v6.1.95",
            "v6.1.94",
            "v6.1.93",
            "v6.1.92",
            "v6.1.91",
            "v6.1.90",
            "v6.1.89",
            "v6.1.88",
            "v6.1.87",
            "v6.1.86",
            "v6.1.85",
            "v6.1.84",
            "v6.1.83",
            "v6.1.82",
            "v6.1.81",
            "v6.1.80",
            "v6.1.79",
            "v6.1.78",
            "v6.1.77",
            "v6.1.76",
            "v6.1.75",
            "v6.1.74",
            "v6.1.73",
            "v6.1.72",
            "v6.1.71"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-40039.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.3.0"
                },
                {
                  "fixed": "6.6.123"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.12.53"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.13.0"
                },
                {
                  "fixed": "6.17.3"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-40039.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:48.564173333Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/305853cce379407090a73b38c5de5ba748893aee",
        "https://git.kernel.org/stable/c/5cc679ba0f4505936124cd4179ba66bb0a4bd9f3",
        "https://git.kernel.org/stable/c/69674b029002b1d90b655f014bdf64f404efa54d",
        "https://git.kernel.org/stable/c/6b615a8fb3af0baf8126cde3d4fee97d57222ffc",
        "https://git.kernel.org/stable/c/6bd7e0e55dcea2cf0d391bbc21c2eb069b4be3e1",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/40xxx/CVE-2025-40039.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2025-40039",
        "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/2025/40xxx/CVE-2025-40039.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2025-40039",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 517069,
  "published_at": "2025-10-28T11:48:19.781+00:00"
}