KernelScan.io

HIGH Introduced in 3.14

watchdog at91sam9 UAF

CVE-2026-74687

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI6.2MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: watchdog: at91sam9_wdt: prevent timer rearm during teardown at91_ping() rearms the watchdog timer from its callback. timer_delete() neither waits for a running callback nor prevents it from rearming the timer, so probe failure or driver removal can leave the timer accessing the devm-allocated at91wdt after it has been freed. Use timer_shutdown_sync() on both teardown paths. It waits for a running callback and rejects any attempt by the callback to rearm the timer.

02

Engine v0.6.0

Risk summary

A race condition in the Atmel AT91SAM9 watchdog driver allows the watchdog timer callback to rearm and access device memory after it has been freed during probe failure or driver removal. This can lead to use-after-free memory corruption. The issue requires local access with high privileges to trigger via driver teardown.

Affecteddrivers/watchdog/at91sam9_wdt.c (watchdog)

Vulnerability analysis

The watchdog timer callback in the AT91SAM9 watchdog driver rearms the timer from within its own callback function. When the driver is torn down—either due to a probe failure or module removal—the teardown code used a timer deletion function that neither waits for a running callback to finish nor prevents it from rearming the timer. This means the callback can continue to access driver-allocated memory after it has already been freed, resulting in a use-after-free. The fix replaces the old timer deletion calls with a synchronous shutdown that waits for any running callback to complete and blocks any rearm attempts, ensuring the timer is fully stopped before memory is released. This vulnerability is reachable locally by a privileged user who can trigger driver probe failure or module removal on a system with the AT91SAM9 watchdog hardware present.

03

BranchIntroducedFixed inPatch commit
6.183.146.18.4529fe74c9aa69
7.13.147.1.9b7949b0a7d99
mainline3.147.28444d66aa6b6