Subject: CVE-2021-47324: watchdog: Fix possible use-after-free in wdt_startup()

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

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

watchdog: Fix possible use-after-free in wdt_startup()

This module's remove path calls del_timer(). However, that function
does not wait until the timer handler finishes. This means that the
timer handler may still be running after the driver's remove function
has finished, which would result in a use-after-free.

Fix by calling del_timer_sync(), which makes sure the timer handler
has finished, and unable to re-schedule itself.

The Linux kernel CVE team has assigned CVE-2021-47324 to this issue.

Affected and fixed versions
===========================

	Fixed in 4.4.276 with commit 63a3dc24bd05
	Fixed in 4.9.276 with commit 862f2b5a7c38
	Fixed in 4.14.240 with commit 0ac50a76cf3c
	Fixed in 4.19.198 with commit dc9403097be5
	Fixed in 5.4.134 with commit 146cc288fb80
	Fixed in 5.10.52 with commit a397cb4576fc
	Fixed in 5.12.19 with commit b4ebf4a4692e
	Fixed in 5.13.4 with commit 8adbbe6c86bb
	Fixed in 5.14 with commit c08a6b31e491

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2021-47324
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	drivers/watchdog/sbc60xxwdt.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/63a3dc24bd053792f84cb4eef0168b1266202a02
	https://git.kernel.org/stable/c/862f2b5a7c38762ac9e369daefbf361a91aca685
	https://git.kernel.org/stable/c/0ac50a76cf3cd63db000648b3b19f3f98b8aaa76
	https://git.kernel.org/stable/c/dc9403097be52d57a5c9c35efa9be79d166a78af
	https://git.kernel.org/stable/c/146cc288fb80c662c9c35e7bc58325d1ac0a7875
	https://git.kernel.org/stable/c/a397cb4576fc2fc802562418b3a50b8f67d60d31
	https://git.kernel.org/stable/c/b4ebf4a4692e84163a69444c70ad515de06e2259
	https://git.kernel.org/stable/c/8adbbe6c86bb13e14f8a19e036ae5f4f5661fd90
	https://git.kernel.org/stable/c/c08a6b31e4917034f0ed0cb457c3bb209576f542