← Back to CVE Explorer

CVE-2026-64239

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: mm/damon/sysfs-schemes: delete tried region in regions_rmdirs() DAMON sysfs maintains the DAMOS tried region directory objects via a linked list. When the user requests refresh of the directories, DAMON sysfs removes all the region directories first, and then generate updated regions directory on the empty space. The removal function (damon_sysfs_scheme_regions_rm_dirs()) only puts the kobj objects. Deletion of the container region object from the linked list is done inside the kobj release callback function. If somehow the callback invocation is delayed, the list will contain regions list that gonna be freed. If the updated region directories creation is started in this situation, the list can be corrupted and use-after-free can happen. Because the kobj objects are managed by only DAMON sysfs, the issue cannot happen in normal situation. But, such delays can be made on kernels that built with CONFIG_DEBUG_KOBJECT_RELEASE. On the kernel, the issue can indeed be reproduced like below. # damo start --damos_action stat # cd /sys/kernel/mm/damon/admin/kdamonds/0/ # for i in {1..10}; do echo update_schemes_tried_regions > state; done # dmesg | grep underflow [ 89.296152] refcount_t: underflow; use-after-free. Fix the issue by removing the region object from the list when decrementing the reference count. Also update damos_sysfs_populate_region_dir() to add the region object to the list only after the kobject_init_and_add() is success, so that fail of kobject_init_and_add() is not leaving the deallocated object on the list. The issue was discovered [1] by Sashiko.

Severity
HIGH
CVSS score
7.8 (v3.1)
Vulnerability status
Analyzed
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-07-24 16:16:53.193000
Last modified
2026-10-27 18:10:00.130000
View original CVE JSON
{
  "id": "CVE-2026-64239",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-07-24T16:16:53.193",
  "lastModified": "2026-10-27T18:10:00.130",
  "vulnStatus": "Analyzed",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmm/damon/sysfs-schemes: delete tried region in regions_rmdirs()\n\nDAMON sysfs maintains the DAMOS tried region directory objects via a\nlinked list.  When the user requests refresh of the directories, DAMON\nsysfs removes all the region directories first, and then generate updated\nregions directory on the empty space.  The removal function\n(damon_sysfs_scheme_regions_rm_dirs()) only puts the kobj objects. \nDeletion of the container region object from the linked list is done\ninside the kobj release callback function.\n\nIf somehow the callback invocation is delayed, the list will contain\nregions list that gonna be freed.  If the updated region directories\ncreation is started in this situation, the list can be corrupted and\nuse-after-free can happen.\n\nBecause the kobj objects are managed by only DAMON sysfs, the issue cannot\nhappen in normal situation.  But, such delays can be made on kernels that\nbuilt with CONFIG_DEBUG_KOBJECT_RELEASE.  On the kernel, the issue can\nindeed be reproduced like below.\n\n    # damo start --damos_action stat\n    # cd /sys/kernel/mm/damon/admin/kdamonds/0/\n    # for i in {1..10}; do echo update_schemes_tried_regions > state; done\n    # dmesg | grep underflow\n    [   89.296152] refcount_t: underflow; use-after-free.\n\nFix the issue by removing the region object from the list when\ndecrementing the reference count.\n\nAlso update damos_sysfs_populate_region_dir() to add the region object to\nthe list only after the kobject_init_and_add() is success, so that fail of\nkobject_init_and_add() is not leaving the deallocated object on the list.\n\nThe issue was discovered [1] by Sashiko."
    },
    {
      "lang": "es",
      "value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\nmm/damon/sysfs-schemes: eliminar región probada en regions_rmdirs()\n\nDAMON sysfs mantiene los objetos de directorio de región probada de DAMOS a través de una lista enlazada. Cuando el usuario solicita la actualización de los directorios, DAMON sysfs elimina primero todos los directorios de región y luego genera un directorio de regiones actualizado en el espacio vacío. La función de eliminación (damon_sysfs_scheme_regions_rm_dirs()) solo pone los objetos kobj. La eliminación del objeto de región contenedor de la lista enlazada se realiza dentro de la función de devolución de llamada de liberación de kobj.\n\nSi de alguna manera la invocación de la devolución de llamada se retrasa, la lista contendrá una lista de regiones que van a ser liberadas. Si la creación de directorios de región actualizados se inicia en esta situación, la lista puede corromperse y puede ocurrir un uso después de liberación.\n\nDebido a que los objetos kobj son gestionados solo por DAMON sysfs, el problema no puede ocurrir en una situación normal. Pero, tales retrasos pueden producirse en kernels que se construyeron con CONFIG_DEBUG_KOBJECT_RELEASE. En el kernel, el problema puede de hecho reproducirse como se muestra a continuación.\n\n    # damo start --damos_action stat\n    # cd /sys/kernel/mm/damon/admin/kdamonds/0/\n    # for i in {1..10}; do echo update_schemes_tried_regions > state; done\n    # dmesg | grep underflow\n    [   89.296152] refcount_t: underflow; use-after-free.\n\nSoluciona el problema eliminando el objeto de región de la lista al decrementar el recuento de referencias.\n\nTambién actualiza damos_sysfs_populate_region_dir() para añadir el objeto de región a la lista solo después de que kobject_init_and_add() sea exitoso, para que el fallo de kobject_init_and_add() no deje el objeto desasignado en la lista.\n\nEl problema fue descubierto [1] por Sashiko."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "mm/damon/sysfs-schemes.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "9277d0367ba18ef4bb98bafb1209e715844cdf7e",
              "lessThan": "c0e37017a452addec873865c94cf7a665663a9b2",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9277d0367ba18ef4bb98bafb1209e715844cdf7e",
              "lessThan": "a5fa42214de55e43d165144727ce9facb9fc6b08",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9277d0367ba18ef4bb98bafb1209e715844cdf7e",
              "lessThan": "0ba6c05156d9ff9fc6ca22b7690e2eec9eca66f7",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9277d0367ba18ef4bb98bafb1209e715844cdf7e",
              "lessThan": "2c33177023c92e76806c535ddbffaa3d3fc37777",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9277d0367ba18ef4bb98bafb1209e715844cdf7e",
              "lessThan": "441f92f7d386b85bad16de49db95a307cba048a2",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "mm/damon/sysfs-schemes.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "6.2",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "6.2",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.6.143",
              "lessThanOrEqual": "6.6.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.12.93",
              "lessThanOrEqual": "6.12.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.35",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.0.12",
              "lessThanOrEqual": "7.0.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.1",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Primary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
          "baseScore": 7.8,
          "baseSeverity": "HIGH",
          "attackVector": "LOCAL",
          "attackComplexity": "LOW",
          "privilegesRequired": "LOW",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 1.8,
        "impactScore": 5.9
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Primary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-416"
        }
      ]
    }
  ],
  "configurations": [
    {
      "nodes": [
        {
          "operator": "OR",
          "negate": false,
          "cpeMatch": [
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "6.2",
              "versionEndExcluding": "6.6.143",
              "matchCriteriaId": "9062F1CD-CAD6-4EA2-A73F-C06D4A887B8C"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "6.7",
              "versionEndExcluding": "6.12.93",
              "matchCriteriaId": "1E73413E-0629-41AA-A4D3-5A3D10A0BD63"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "6.13",
              "versionEndExcluding": "6.18.35",
              "matchCriteriaId": "0FCCB23A-7629-4386-93B6-B119237C4382"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "6.19",
              "versionEndExcluding": "7.0.12",
              "matchCriteriaId": "9161A938-0FA8-44BC-95FE-C5A271601AB3"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:*",
              "matchCriteriaId": "B1EF7059-E670-45F4-B422-54C40FA86390"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:*",
              "matchCriteriaId": "0D38F0BF-A728-4133-A358-D44A2F7EE6D6"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:o:linux:linux_kernel:7.1:rc3:*:*:*:*:*:*",
              "matchCriteriaId": "EC732D08-5F7B-46D9-B154-E60C7F4F0A97"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:o:linux:linux_kernel:7.1:rc4:*:*:*:*:*:*",
              "matchCriteriaId": "E5910A9D-F60A-409A-B486-FE66BFEBA9B9"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:o:linux:linux_kernel:7.1:rc5:*:*:*:*:*:*",
              "matchCriteriaId": "81DFF19E-9CF8-49C6-8C36-1E4038622933"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/0ba6c05156d9ff9fc6ca22b7690e2eec9eca66f7",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "tags": [
        "Patch"
      ]
    },
    {
      "url": "https://git.kernel.org/stable/c/2c33177023c92e76806c535ddbffaa3d3fc37777",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "tags": [
        "Patch"
      ]
    },
    {
      "url": "https://git.kernel.org/stable/c/441f92f7d386b85bad16de49db95a307cba048a2",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "tags": [
        "Patch"
      ]
    },
    {
      "url": "https://git.kernel.org/stable/c/a5fa42214de55e43d165144727ce9facb9fc6b08",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "tags": [
        "Patch"
      ]
    },
    {
      "url": "https://git.kernel.org/stable/c/c0e37017a452addec873865c94cf7a665663a9b2",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "tags": [
        "Patch"
      ]
    }
  ]
}