---
id: CVE-2026-68318
title: 'pds_core: fix use-after-free on workqueue during remove'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  pds_core: fix use-after-free on workqueue during remove

  In pdsc_remove(), the workqueue is destroyed before pdsc_teardown()
  is called. This ordering allows two paths t…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 01ba61b55b2041a39c54aefb3153c770dd59a0ef <
    bac237c2aedb8225bfd2317c1361bbfce1e419ca
  - >-
    Linux >= 01ba61b55b2041a39c54aefb3153c770dd59a0ef <
    224214eb4182ff20a665b615a90b66017539dd75
  - >-
    Linux >= 01ba61b55b2041a39c54aefb3153c770dd59a0ef <
    9e0f80fac50ab95dd75537c8ecaf5051d01f19b5
  - >-
    Linux >= 01ba61b55b2041a39c54aefb3153c770dd59a0ef <
    ecc7a7d7569ec1d6a61e18372696b9de97635156
  - >-
    Linux >= 01ba61b55b2041a39c54aefb3153c770dd59a0ef <
    0ad134881508c36b65c1a8864f8bec53adbd3327
  - Linux 6.4
published: '2026-08-10'
updated: '2026-10-21'
sourceUpdated: '2026-10-21T12:43:51.063Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-68318'
references:
  - url: 'https://git.kernel.org/stable/c/bac237c2aedb8225bfd2317c1361bbfce1e419ca'
  - url: 'https://git.kernel.org/stable/c/224214eb4182ff20a665b615a90b66017539dd75'
  - url: 'https://git.kernel.org/stable/c/9e0f80fac50ab95dd75537c8ecaf5051d01f19b5'
  - url: 'https://git.kernel.org/stable/c/ecc7a7d7569ec1d6a61e18372696b9de97635156'
  - url: 'https://git.kernel.org/stable/c/0ad134881508c36b65c1a8864f8bec53adbd3327'
tags:
  - cve.org
epss: 0.00168
epssPercentile: 0.05725
ingestedAt: '2026-10-21T12:48:53.601Z'
---

## Overview

In the Linux kernel, the following vulnerability has been resolved:

pds_core: fix use-after-free on workqueue during remove

In pdsc_remove(), the workqueue is destroyed before pdsc_teardown()
is called. This ordering allows two paths to queue work on the
destroyed workqueue:

1. If pdsc_teardown() -> pdsc_devcmd_reset() times out, the error
   path in pdsc_devcmd_locked() queues health_work.

2. A NotifyQ event can trigger the ISR and queue work before free_irq()
   is called in pdsc_teardown().

Fix by moving destroy_workqueue() after pdsc_teardown() so the
workqueue outlives every queuer; destroy_workqueue() then flushes any
work still pending.

Draining the queued work also requires ordering the teardown so the
resources that work touches are freed last:

  - In pdsc_qcq_free(), after freeing the interrupt, cancel_work_sync()
    the queue's work and only then clear qcq->intx, so
    pdsc_process_adminq()'s read of qcq->intx for interrupt-credit
    return cannot race with the clear.

  - Free adminqcq before notifyqcq: the shared adminq ISR is released
    when adminqcq is freed, and the adminq work accesses notifyqcq, so
    both must be stopped before notifyqcq is freed.

## Affected

- `Linux >= 01ba61b55b2041a39c54aefb3153c770dd59a0ef < bac237c2aedb8225bfd2317c1361bbfce1e419ca`
- `Linux >= 01ba61b55b2041a39c54aefb3153c770dd59a0ef < 224214eb4182ff20a665b615a90b66017539dd75`
- `Linux >= 01ba61b55b2041a39c54aefb3153c770dd59a0ef < 9e0f80fac50ab95dd75537c8ecaf5051d01f19b5`
- `Linux >= 01ba61b55b2041a39c54aefb3153c770dd59a0ef < ecc7a7d7569ec1d6a61e18372696b9de97635156`
- `Linux >= 01ba61b55b2041a39c54aefb3153c770dd59a0ef < 0ad134881508c36b65c1a8864f8bec53adbd3327`
- `Linux 6.4`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
