{
  "affected": [
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:12",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "6.1.170-1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:13",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "6.12.85-1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "ecosystem_specific": {
        "urgency": "not yet assigned"
      },
      "package": {
        "ecosystem": "Debian:14",
        "name": "linux"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "6.19.11-1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "details": "In the Linux kernel, the following vulnerability has been resolved:  ksmbd: fix memory leaks and NULL deref in smb2_lock()  smb2_lock() has three error handling issues after list_del() detaches smb_lock from lock_list at no_check_cl:  1) If vfs_lock_file() returns an unexpected error in the non-UNLOCK    path, goto out leaks smb_lock and its flock because the out:    handler only iterates lock_list and rollback_list, neither of    which contains the detached smb_lock.  2) If vfs_lock_file() returns -ENOENT in the UNLOCK path, goto out    leaks smb_lock and flock for the same reason.  The error code    returned to the dispatcher is also stale.  3) In the rollback path, smb_flock_init() can return NULL on    allocation failure.  The result is dereferenced unconditionally,    causing a kernel NULL pointer dereference.  Add a NULL check to    prevent the crash and clean up the bookkeeping; the VFS lock    itself cannot be rolled back without the allocation and will be    released at file or connection teardown.  Fix cases 1 and 2 by hoisting the locks_free_lock()/kfree() to before the if(!rc) check in the UNLOCK branch so all exit paths share one free site, and by freeing smb_lock and flock before goto out in the non-UNLOCK branch.  Propagate the correct error code in both cases. Fix case 3 by wrapping the VFS unlock in an if(rlock) guard and adding a NULL check for locks_free_lock(rlock) in the shared cleanup.  Found via call-graph analysis using sqry.",
  "id": "DEBIAN-CVE-2026-31477",
  "modified": "2026-09-14T16:47:48.145061010Z",
  "published": "2026-04-22T14:16:44.440Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://security-tracker.debian.org/tracker/CVE-2026-31477"
    }
  ],
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
      "type": "CVSS_V3"
    }
  ],
  "upstream": [
    "CVE-2026-31477"
  ]
}