CVE-2026-64029 (GCVE-0-2026-64029)
Vulnerability from cvelistv5
Published
2026-07-19 15:39
Modified
2026-10-19 20:28
Summary
In the Linux kernel, the following vulnerability has been resolved: ALSA: seq: Serialize UMP output teardown with event_input seq_ump_process_event() borrows client->out_rfile.output without synchronizing with the first-open and last-close transition in seq_ump_client_open() and seq_ump_client_close(). The last output unuse can therefore drop opened[STR_OUT] to zero and release the rawmidi file while an in-flight event_input callback is still inside snd_rawmidi_kernel_write(). That leaves the rawmidi substream runtime exposed to teardown before the write path has taken its own buffer reference. Add a per-client rwlock for the event_input-visible output file. Publish a newly opened output file under the write side, and hold the read side from the output lookup through snd_rawmidi_kernel_write(). The last output close copies and clears the visible output file under the write side, then drops the lock and releases the saved rawmidi file. Use IRQ-safe rwlock guards because event_input can also be reached from atomic sequencer delivery. The buggy scenario involves two paths, with each column showing the order within that path: path A label: event_input path path B label: last unuse path 1. seq_ump_process_event() reads 1. seq_ump_client_close() client->out_rfile.output. drops opened[STR_OUT] to zero. 2. snd_rawmidi_kernel_write1() 2. snd_rawmidi_kernel_release() has not yet pinned runtime. closes the output file. 3. The writer continues using 3. close_substream() frees the borrowed substream. substream->runtime. This keeps the output substream and runtime alive for the full event_input write while keeping rawmidi release outside the rwlock. KASAN reproduced this as a slab-use-after-free in snd_rawmidi_kernel_write1(), with allocation through seq_ump_use()/snd_seq_port_connect() and free through seq_ump_unuse()/snd_seq_port_disconnect(). Validation reproduced this kernel report: KASAN slab-use-after-free in snd_rawmidi_kernel_write1+0x9d/0x400 RIP: 0033:0x7f5528af837f Read of size 8 Call trace: dump_stack_lvl+0x73/0xb0 (?:?) print_report+0xd1/0x650 (?:?) srso_alias_return_thunk+0x5/0xfbef5 (?:?) __virt_addr_valid+0x1a7/0x340 (?:?) kasan_complete_mode_report_info+0x64/0x200 (?:?) kasan_report+0xf7/0x130 (?:?) snd_rawmidi_kernel_write1+0x9d/0x400 (?:?) __asan_load8+0x82/0xb0 (?:?) update_stack_state+0x1ef/0x2d0 (?:?) snd_rawmidi_kernel_write+0x1a/0x20 (?:?) seq_ump_process_event+0xd4/0x120 (sound/core/seq/seq_ump_client.c:82) __snd_seq_deliver_single_event+0x8a/0xe0 (?:?) snd_seq_deliver_from_ump+0x2b2/0xd60 (?:?) lock_acquire+0x14e/0x2e0 (?:?) find_held_lock+0x31/0x90 (?:?) snd_seq_port_use_ptr+0xa6/0xe0 (?:?) __kasan_check_write+0x18/0x20 (?:?) do_raw_read_unlock+0x32/0xa0 (?:?) _raw_read_unlock+0x26/0x50 (?:?) snd_seq_deliver_single_event+0x45c/0x4b0 (?:?) snd_seq_deliver_event+0x10d/0x1b0 (?:?) snd_seq_client_enqueue_event+0x192/0x240 (?:?) snd_seq_write+0x2cd/0x450 (?:?) apparmor_file_permission+0x20/0x30 (?:?) security_file_permission+0x51/0x60 (?:?) vfs_write+0x1ce/0x850 (?:?) __fget_files+0x12b/0x220 (?:?) lock_release+0xc8/0x2a0 (?:?) __rcu_read_unlock+0x74/0x2d0 (?:?) __fget_files+0x135/0x220 (?:?) ksys_write+0x15a/0x180 (?:?) rcu_is_watching+0x24/0x60 (?:?) __x64_sys_write+0x46/0x60 (?:?) x64_sys_call+0x7d/0x20d0 (?:?) do_syscall_64+0xc1/0x360 (arch/x86/entry/syscall_64.c:87) entry_SYSCALL_64_after_hwframe+0x77/0x7f (?:?)
Impacted products
Vendor Product Version
Linux Linux Version: 81fd444aa371261cd33f31d4ffd80faeeeab0cc9
Version: 81fd444aa371261cd33f31d4ffd80faeeeab0cc9
Version: 81fd444aa371261cd33f31d4ffd80faeeeab0cc9
Version: 81fd444aa371261cd33f31d4ffd80faeeeab0cc9
Version: 81fd444aa371261cd33f31d4ffd80faeeeab0cc9
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-64029",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "total"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-10-16T15:35:34.818575Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "problemTypes": [
          {
            "descriptions": [
              {
                "cweId": "CWE-362",
                "description": "CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization (\u0027Race Condition\u0027)",
                "lang": "en",
                "type": "CWE"
              }
            ]
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-10-19T20:28:09.426Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "sound/core/seq/seq_ump_client.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "8ba1c4ddbb1c67d34bb440aecb9f5690ed3f64cb",
              "status": "affected",
              "version": "81fd444aa371261cd33f31d4ffd80faeeeab0cc9",
              "versionType": "git"
            },
            {
              "lessThan": "0cb1ad795570167558530d6194297ac2396a1991",
              "status": "affected",
              "version": "81fd444aa371261cd33f31d4ffd80faeeeab0cc9",
              "versionType": "git"
            },
            {
              "lessThan": "3aab4a58d23fb22dac5b558bbe5df1a8dad00b4b",
              "status": "affected",
              "version": "81fd444aa371261cd33f31d4ffd80faeeeab0cc9",
              "versionType": "git"
            },
            {
              "lessThan": "ef46b616a4c219185bbf10ebcbacb571583fd0e4",
              "status": "affected",
              "version": "81fd444aa371261cd33f31d4ffd80faeeeab0cc9",
              "versionType": "git"
            },
            {
              "lessThan": "60a1969fae6209644698fca91c185d153674f631",
              "status": "affected",
              "version": "81fd444aa371261cd33f31d4ffd80faeeeab0cc9",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "sound/core/seq/seq_ump_client.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.5"
            },
            {
              "lessThan": "6.5",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.142",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.92",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.34",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.0.*",
              "status": "unaffected",
              "version": "7.0.11",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.142",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.92",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.34",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0.11",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nALSA: seq: Serialize UMP output teardown with event_input\n\nseq_ump_process_event() borrows client-\u003eout_rfile.output without\nsynchronizing with the first-open and last-close transition in\nseq_ump_client_open() and seq_ump_client_close().\n\nThe last output unuse can therefore drop opened[STR_OUT] to zero and\nrelease the rawmidi file while an in-flight event_input callback is still\ninside snd_rawmidi_kernel_write(). That leaves the rawmidi substream\nruntime exposed to teardown before the write path has taken its own\nbuffer reference.\n\nAdd a per-client rwlock for the event_input-visible output file. Publish\na newly opened output file under the write side, and hold the read side\nfrom the output lookup through snd_rawmidi_kernel_write(). The last\noutput close copies and clears the visible output file under the write\nside, then drops the lock and releases the saved rawmidi file. Use\nIRQ-safe rwlock guards because event_input can also be reached from\natomic sequencer delivery.\n\nThe buggy scenario involves two paths, with each column showing the\norder within that path:\n\npath A label: event_input path         path B label: last unuse path\n1. seq_ump_process_event() reads       1. seq_ump_client_close()\n   client-\u003eout_rfile.output.              drops opened[STR_OUT] to zero.\n2. snd_rawmidi_kernel_write1()         2. snd_rawmidi_kernel_release()\n   has not yet pinned runtime.            closes the output file.\n3. The writer continues using          3. close_substream() frees\n   the borrowed substream.                substream-\u003eruntime.\n\nThis keeps the output substream and runtime alive for the full\nevent_input write while keeping rawmidi release outside the rwlock.\n\nKASAN reproduced this as a slab-use-after-free in\nsnd_rawmidi_kernel_write1(), with allocation through\nseq_ump_use()/snd_seq_port_connect() and free through\nseq_ump_unuse()/snd_seq_port_disconnect().\n\n\nValidation reproduced this kernel report:\nKASAN slab-use-after-free in snd_rawmidi_kernel_write1+0x9d/0x400\nRIP: 0033:0x7f5528af837f\nRead of size 8\nCall trace:\n  dump_stack_lvl+0x73/0xb0 (?:?)\n  print_report+0xd1/0x650 (?:?)\n  srso_alias_return_thunk+0x5/0xfbef5 (?:?)\n  __virt_addr_valid+0x1a7/0x340 (?:?)\n  kasan_complete_mode_report_info+0x64/0x200 (?:?)\n  kasan_report+0xf7/0x130 (?:?)\n  snd_rawmidi_kernel_write1+0x9d/0x400 (?:?)\n  __asan_load8+0x82/0xb0 (?:?)\n  update_stack_state+0x1ef/0x2d0 (?:?)\n  snd_rawmidi_kernel_write+0x1a/0x20 (?:?)\n  seq_ump_process_event+0xd4/0x120 (sound/core/seq/seq_ump_client.c:82)\n  __snd_seq_deliver_single_event+0x8a/0xe0 (?:?)\n  snd_seq_deliver_from_ump+0x2b2/0xd60 (?:?)\n  lock_acquire+0x14e/0x2e0 (?:?)\n  find_held_lock+0x31/0x90 (?:?)\n  snd_seq_port_use_ptr+0xa6/0xe0 (?:?)\n  __kasan_check_write+0x18/0x20 (?:?)\n  do_raw_read_unlock+0x32/0xa0 (?:?)\n  _raw_read_unlock+0x26/0x50 (?:?)\n  snd_seq_deliver_single_event+0x45c/0x4b0 (?:?)\n  snd_seq_deliver_event+0x10d/0x1b0 (?:?)\n  snd_seq_client_enqueue_event+0x192/0x240 (?:?)\n  snd_seq_write+0x2cd/0x450 (?:?)\n  apparmor_file_permission+0x20/0x30 (?:?)\n  security_file_permission+0x51/0x60 (?:?)\n  vfs_write+0x1ce/0x850 (?:?)\n  __fget_files+0x12b/0x220 (?:?)\n  lock_release+0xc8/0x2a0 (?:?)\n  __rcu_read_unlock+0x74/0x2d0 (?:?)\n  __fget_files+0x135/0x220 (?:?)\n  ksys_write+0x15a/0x180 (?:?)\n  rcu_is_watching+0x24/0x60 (?:?)\n  __x64_sys_write+0x46/0x60 (?:?)\n  x64_sys_call+0x7d/0x20d0 (?:?)\n  do_syscall_64+0xc1/0x360 (arch/x86/entry/syscall_64.c:87)\n  entry_SYSCALL_64_after_hwframe+0x77/0x7f (?:?)"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - Exploitation requires local access via the ALSA sequencer device node (/dev/snd/seq) using write(2) and port-subscription ioctls; there is no network, Bluetooth, or physical-device attack surface on the vulnerable code path.\nAC:L - The race is between concurrent UMP event delivery and the last output-port unsubscribe/close path, and a local attacker can control both sides with parallel threads (flood write() while repeatedly subscribing/unsubscribing to the UMP port).\nPR:L - Any local unprivileged user who can open /dev/snd/seq (typically membership in the audio group on desktop/workstation systems where UMP MIDI hardware is present) can create sequencer clients, subscribe to UMP kernel ports, and trigger the bug without real root or init-namespace capabilities.\nUI:N - Exploitation is fully attacker-driven through sequencer writes and subscription management; no victim interaction such as opening files, mounting filesystems, or plugging in devices is required beyond the UMP endpoint already being present on the system.\nS:U - Impact is confined to kernel memory corruption and potential local privilege escalation within the same kernel security boundary; this is not a VM escape, sandbox escape, or cross-authority boundary bypass.\nC:H - KASAN confirmed a slab use-after-free on freed substream runtime metadata in snd_rawmidi_kernel_write1(); UAF on kernel heap objects enables controlled reallocation and arbitrary kernel memory disclosure primitives.\nI:H - The UAF occurs inside snd_rawmidi_kernel_write1(), which performs memcpy() into runtime-\u003ebuffer using attacker-supplied UMP event payload, providing a plausible path to arbitrary kernel memory corruption and code execution beyond a simple crash.\nA:H - The confirmed KASAN slab-use-after-free in kernel write path causes kernel oops/panic; even without full exploitation, the bug reliably threatens system availability through kernel crash."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:38:23.130Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/8ba1c4ddbb1c67d34bb440aecb9f5690ed3f64cb"
        },
        {
          "url": "https://git.kernel.org/stable/c/0cb1ad795570167558530d6194297ac2396a1991"
        },
        {
          "url": "https://git.kernel.org/stable/c/3aab4a58d23fb22dac5b558bbe5df1a8dad00b4b"
        },
        {
          "url": "https://git.kernel.org/stable/c/ef46b616a4c219185bbf10ebcbacb571583fd0e4"
        },
        {
          "url": "https://git.kernel.org/stable/c/60a1969fae6209644698fca91c185d153674f631"
        }
      ],
      "title": "ALSA: seq: Serialize UMP output teardown with event_input",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-64029",
    "datePublished": "2026-07-19T15:39:20.368Z",
    "dateReserved": "2026-07-19T07:54:57.028Z",
    "dateUpdated": "2026-10-19T20:28:09.426Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-64029\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-10-16T15:35:34.818575Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-10-16T15:35:35.392Z\"}}], \"cna\": {\"title\": \"ALSA: seq: Serialize UMP output teardown with event_input\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 7.8, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - Exploitation requires local access via the ALSA sequencer device node (/dev/snd/seq) using write(2) and port-subscription ioctls; there is no network, Bluetooth, or physical-device attack surface on the vulnerable code path.\\nAC:L - The race is between concurrent UMP event delivery and the last output-port unsubscribe/close path, and a local attacker can control both sides with parallel threads (flood write() while repeatedly subscribing/unsubscribing to the UMP port).\\nPR:L - Any local unprivileged user who can open /dev/snd/seq (typically membership in the audio group on desktop/workstation systems where UMP MIDI hardware is present) can create sequencer clients, subscribe to UMP kernel ports, and trigger the bug without real root or init-namespace capabilities.\\nUI:N - Exploitation is fully attacker-driven through sequencer writes and subscription management; no victim interaction such as opening files, mounting filesystems, or plugging in devices is required beyond the UMP endpoint already being present on the system.\\nS:U - Impact is confined to kernel memory corruption and potential local privilege escalation within the same kernel security boundary; this is not a VM escape, sandbox escape, or cross-authority boundary bypass.\\nC:H - KASAN confirmed a slab use-after-free on freed substream runtime metadata in snd_rawmidi_kernel_write1(); UAF on kernel heap objects enables controlled reallocation and arbitrary kernel memory disclosure primitives.\\nI:H - The UAF occurs inside snd_rawmidi_kernel_write1(), which performs memcpy() into runtime-\u003ebuffer using attacker-supplied UMP event payload, providing a plausible path to arbitrary kernel memory corruption and code execution beyond a simple crash.\\nA:H - The confirmed KASAN slab-use-after-free in kernel write path causes kernel oops/panic; even without full exploitation, the bug reliably threatens system availability through kernel crash.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"81fd444aa371261cd33f31d4ffd80faeeeab0cc9\", \"lessThan\": \"8ba1c4ddbb1c67d34bb440aecb9f5690ed3f64cb\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"81fd444aa371261cd33f31d4ffd80faeeeab0cc9\", \"lessThan\": \"0cb1ad795570167558530d6194297ac2396a1991\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"81fd444aa371261cd33f31d4ffd80faeeeab0cc9\", \"lessThan\": \"3aab4a58d23fb22dac5b558bbe5df1a8dad00b4b\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"81fd444aa371261cd33f31d4ffd80faeeeab0cc9\", \"lessThan\": \"ef46b616a4c219185bbf10ebcbacb571583fd0e4\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"81fd444aa371261cd33f31d4ffd80faeeeab0cc9\", \"lessThan\": \"60a1969fae6209644698fca91c185d153674f631\", \"versionType\": \"git\"}], \"programFiles\": [\"sound/core/seq/seq_ump_client.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.5\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.5\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.6.142\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.12.92\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.12.*\"}, {\"status\": \"unaffected\", \"version\": \"6.18.34\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.18.*\"}, {\"status\": \"unaffected\", \"version\": \"7.0.11\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"7.0.*\"}, {\"status\": \"unaffected\", \"version\": \"7.1\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"sound/core/seq/seq_ump_client.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/8ba1c4ddbb1c67d34bb440aecb9f5690ed3f64cb\"}, {\"url\": \"https://git.kernel.org/stable/c/0cb1ad795570167558530d6194297ac2396a1991\"}, {\"url\": \"https://git.kernel.org/stable/c/3aab4a58d23fb22dac5b558bbe5df1a8dad00b4b\"}, {\"url\": \"https://git.kernel.org/stable/c/ef46b616a4c219185bbf10ebcbacb571583fd0e4\"}, {\"url\": \"https://git.kernel.org/stable/c/60a1969fae6209644698fca91c185d153674f631\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nALSA: seq: Serialize UMP output teardown with event_input\\n\\nseq_ump_process_event() borrows client-\u003eout_rfile.output without\\nsynchronizing with the first-open and last-close transition in\\nseq_ump_client_open() and seq_ump_client_close().\\n\\nThe last output unuse can therefore drop opened[STR_OUT] to zero and\\nrelease the rawmidi file while an in-flight event_input callback is still\\ninside snd_rawmidi_kernel_write(). That leaves the rawmidi substream\\nruntime exposed to teardown before the write path has taken its own\\nbuffer reference.\\n\\nAdd a per-client rwlock for the event_input-visible output file. Publish\\na newly opened output file under the write side, and hold the read side\\nfrom the output lookup through snd_rawmidi_kernel_write(). The last\\noutput close copies and clears the visible output file under the write\\nside, then drops the lock and releases the saved rawmidi file. Use\\nIRQ-safe rwlock guards because event_input can also be reached from\\natomic sequencer delivery.\\n\\nThe buggy scenario involves two paths, with each column showing the\\norder within that path:\\n\\npath A label: event_input path         path B label: last unuse path\\n1. seq_ump_process_event() reads       1. seq_ump_client_close()\\n   client-\u003eout_rfile.output.              drops opened[STR_OUT] to zero.\\n2. snd_rawmidi_kernel_write1()         2. snd_rawmidi_kernel_release()\\n   has not yet pinned runtime.            closes the output file.\\n3. The writer continues using          3. close_substream() frees\\n   the borrowed substream.                substream-\u003eruntime.\\n\\nThis keeps the output substream and runtime alive for the full\\nevent_input write while keeping rawmidi release outside the rwlock.\\n\\nKASAN reproduced this as a slab-use-after-free in\\nsnd_rawmidi_kernel_write1(), with allocation through\\nseq_ump_use()/snd_seq_port_connect() and free through\\nseq_ump_unuse()/snd_seq_port_disconnect().\\n\\n\\nValidation reproduced this kernel report:\\nKASAN slab-use-after-free in snd_rawmidi_kernel_write1+0x9d/0x400\\nRIP: 0033:0x7f5528af837f\\nRead of size 8\\nCall trace:\\n  dump_stack_lvl+0x73/0xb0 (?:?)\\n  print_report+0xd1/0x650 (?:?)\\n  srso_alias_return_thunk+0x5/0xfbef5 (?:?)\\n  __virt_addr_valid+0x1a7/0x340 (?:?)\\n  kasan_complete_mode_report_info+0x64/0x200 (?:?)\\n  kasan_report+0xf7/0x130 (?:?)\\n  snd_rawmidi_kernel_write1+0x9d/0x400 (?:?)\\n  __asan_load8+0x82/0xb0 (?:?)\\n  update_stack_state+0x1ef/0x2d0 (?:?)\\n  snd_rawmidi_kernel_write+0x1a/0x20 (?:?)\\n  seq_ump_process_event+0xd4/0x120 (sound/core/seq/seq_ump_client.c:82)\\n  __snd_seq_deliver_single_event+0x8a/0xe0 (?:?)\\n  snd_seq_deliver_from_ump+0x2b2/0xd60 (?:?)\\n  lock_acquire+0x14e/0x2e0 (?:?)\\n  find_held_lock+0x31/0x90 (?:?)\\n  snd_seq_port_use_ptr+0xa6/0xe0 (?:?)\\n  __kasan_check_write+0x18/0x20 (?:?)\\n  do_raw_read_unlock+0x32/0xa0 (?:?)\\n  _raw_read_unlock+0x26/0x50 (?:?)\\n  snd_seq_deliver_single_event+0x45c/0x4b0 (?:?)\\n  snd_seq_deliver_event+0x10d/0x1b0 (?:?)\\n  snd_seq_client_enqueue_event+0x192/0x240 (?:?)\\n  snd_seq_write+0x2cd/0x450 (?:?)\\n  apparmor_file_permission+0x20/0x30 (?:?)\\n  security_file_permission+0x51/0x60 (?:?)\\n  vfs_write+0x1ce/0x850 (?:?)\\n  __fget_files+0x12b/0x220 (?:?)\\n  lock_release+0xc8/0x2a0 (?:?)\\n  __rcu_read_unlock+0x74/0x2d0 (?:?)\\n  __fget_files+0x135/0x220 (?:?)\\n  ksys_write+0x15a/0x180 (?:?)\\n  rcu_is_watching+0x24/0x60 (?:?)\\n  __x64_sys_write+0x46/0x60 (?:?)\\n  x64_sys_call+0x7d/0x20d0 (?:?)\\n  do_syscall_64+0xc1/0x360 (arch/x86/entry/syscall_64.c:87)\\n  entry_SYSCALL_64_after_hwframe+0x77/0x7f (?:?)\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.142\", \"versionStartIncluding\": \"6.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.12.92\", \"versionStartIncluding\": \"6.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.18.34\", \"versionStartIncluding\": \"6.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"7.0.11\", \"versionStartIncluding\": \"6.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"7.1\", \"versionStartIncluding\": \"6.5\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T12:38:23.130Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2026-64029\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-10-16T15:42:19.641Z\", \"dateReserved\": \"2026-07-19T07:54:57.028Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2026-07-19T15:39:20.368Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…