---
id: CVE-2025-68822
title: 'Input: alps - fix use-after-free bugs caused by dev3_register_work'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  Input: alps - fix use-after-free bugs caused by dev3_register_work

  The dev3_register_work delayed work item is initialized within
  alps_reconnect() and scheduled upon r…
severity: high
cvss: 7.8
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'
cvssSource: cna
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 04aae283ba6a8cd4851d937bf9c6d6ef0361d794 <
    ed8c61b89be0c45f029228b2913d5cf7b5cda1a7
  - >-
    Linux >= 04aae283ba6a8cd4851d937bf9c6d6ef0361d794 <
    a9c115e017b2c633d25bdfe6709dda6fc36f08c2
  - >-
    Linux >= 04aae283ba6a8cd4851d937bf9c6d6ef0361d794 <
    bf40644ef8c8a288742fa45580897ed0e0289474
  - Linux 4.0
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: total
  timestamp: '2026-10-16T15:05:36.678846Z'
published: '2026-01-13'
updated: '2026-10-16'
sourceUpdated: '2026-10-16T15:09:45.906Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2025-68822'
references:
  - url: 'https://git.kernel.org/stable/c/ed8c61b89be0c45f029228b2913d5cf7b5cda1a7'
  - url: 'https://git.kernel.org/stable/c/a9c115e017b2c633d25bdfe6709dda6fc36f08c2'
  - url: 'https://git.kernel.org/stable/c/bf40644ef8c8a288742fa45580897ed0e0289474'
tags:
  - cve.org
epss: 0.00148
epssPercentile: 0.03638
ingestedAt: '2026-10-16T17:24:46.634Z'
---

## Overview

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

Input: alps - fix use-after-free bugs caused by dev3_register_work

The dev3_register_work delayed work item is initialized within
alps_reconnect() and scheduled upon receipt of the first bare
PS/2 packet from an external PS/2 device connected to the ALPS
touchpad. During device detachment, the original implementation
calls flush_workqueue() in psmouse_disconnect() to ensure
completion of dev3_register_work. However, the flush_workqueue()
in psmouse_disconnect() only blocks and waits for work items that
were already queued to the workqueue prior to its invocation. Any
work items submitted after flush_workqueue() is called are not
included in the set of tasks that the flush operation awaits.
This means that after flush_workqueue() has finished executing,
the dev3_register_work could still be scheduled. Although the
psmouse state is set to PSMOUSE_CMD_MODE in psmouse_disconnect(),
the scheduling of dev3_register_work remains unaffected.

The race condition can occur as follows:

CPU 0 (cleanup path)     | CPU 1 (delayed work)
psmouse_disconnect()     |
  psmouse_set_state()    |
  flush_workqueue()      | alps_report_bare_ps2_packet()
  alps_disconnect()      |   psmouse_queue_work()
    kfree(priv); // FREE | alps_register_bare_ps2_mouse()
                         |   priv = container_of(work...); // USE
                         |   priv->dev3 // USE

Add disable_delayed_work_sync() in alps_disconnect() to ensure
that dev3_register_work is properly canceled and prevented from
executing after the alps_data structure has been deallocated.

This bug is identified by static analysis.

## Affected

- `Linux >= 04aae283ba6a8cd4851d937bf9c6d6ef0361d794 < ed8c61b89be0c45f029228b2913d5cf7b5cda1a7`
- `Linux >= 04aae283ba6a8cd4851d937bf9c6d6ef0361d794 < a9c115e017b2c633d25bdfe6709dda6fc36f08c2`
- `Linux >= 04aae283ba6a8cd4851d937bf9c6d6ef0361d794 < bf40644ef8c8a288742fa45580897ed0e0289474`
- `Linux 4.0`

## Remediation

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