---
id: CVE-2025-71073
title: 'Input: lkkbd - disable pending work before freeing device'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  Input: lkkbd - disable pending work before freeing device

  lkkbd_interrupt() schedules lk->tq via schedule_work(), and the work
  handler lkkbd_reinit() dereferences the …
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 <
    8cf889d45bbc8477206dda78c8f757ea8ff68213
  - >-
    Linux >= 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 <
    3a7cd1397c209076c371d53bf39a55c138f62342
  - >-
    Linux >= 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 <
    cffc4e29b1e2d44ab094cf142d7c461ff09b9104
  - >-
    Linux >= 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 <
    e58c88f0cb2d8ed89de78f6f17409d29cfab6c5c
  - Linux 2.6.12
published: '2026-01-13'
updated: '2026-10-21'
sourceUpdated: '2026-10-21T12:38:32.138Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2025-71073'
references:
  - url: 'https://git.kernel.org/stable/c/8cf889d45bbc8477206dda78c8f757ea8ff68213'
  - url: 'https://git.kernel.org/stable/c/3a7cd1397c209076c371d53bf39a55c138f62342'
  - url: 'https://git.kernel.org/stable/c/cffc4e29b1e2d44ab094cf142d7c461ff09b9104'
  - url: 'https://git.kernel.org/stable/c/e58c88f0cb2d8ed89de78f6f17409d29cfab6c5c'
tags:
  - cve.org
epss: 0.00178
epssPercentile: 0.07265
ingestedAt: '2026-10-21T12:48:53.675Z'
---

## Overview

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

Input: lkkbd - disable pending work before freeing device

lkkbd_interrupt() schedules lk->tq via schedule_work(), and the work
handler lkkbd_reinit() dereferences the lkkbd structure and its
serio/input_dev fields.

lkkbd_disconnect() and error paths in lkkbd_connect() free the lkkbd
structure without preventing the reinit work from being queued again
until serio_close() returns. This can allow the work handler to run
after the structure has been freed, leading to a potential use-after-free.

Use disable_work_sync() instead of cancel_work_sync() to ensure the
reinit work cannot be re-queued, and call it both in lkkbd_disconnect()
and in lkkbd_connect() error paths after serio_open().

## Affected

- `Linux >= 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 8cf889d45bbc8477206dda78c8f757ea8ff68213`
- `Linux >= 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < 3a7cd1397c209076c371d53bf39a55c138f62342`
- `Linux >= 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < cffc4e29b1e2d44ab094cf142d7c461ff09b9104`
- `Linux >= 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 < e58c88f0cb2d8ed89de78f6f17409d29cfab6c5c`
- `Linux 2.6.12`

## Remediation

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