watchdog: sc520_wdt: Fix possible use-after-free in wdt_turnoff()
authorZou Wei <zou_wei@huawei.com>
Tue, 11 May 2021 07:04:51 +0000 (15:04 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Jul 2021 14:17:52 +0000 (16:17 +0200)
commit2aef07017fae21c3d8acea9656b10e3b9c0f1e04
treed6ab91221776b207146807dca6c006feacf10423
parent0ac50a76cf3cd63db000648b3b19f3f98b8aaa76
watchdog: sc520_wdt: Fix possible use-after-free in wdt_turnoff()

[ Upstream commit 90b7c141132244e8e49a34a4c1e445cce33e07f4 ]

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.

Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Zou Wei <zou_wei@huawei.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/1620716691-108460-1-git-send-email-zou_wei@huawei.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/watchdog/sc520_wdt.c