Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp3839583pxv; Mon, 19 Jul 2021 09:59:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwG4ErEkCBdaUOo8Kwca8pyseN9MyIUCbhhP1DW2NIw4tEg4sd6gcbIXf4lUCpy0F1shoYQ X-Received: by 2002:a17:906:4dc5:: with SMTP id f5mr28921493ejw.162.1626713985808; Mon, 19 Jul 2021 09:59:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626713985; cv=none; d=google.com; s=arc-20160816; b=CWY/S0NXYc5+cS17fni+4YTSZIMqW3p8MNgj7LJEF/4MJu4uAOMe2LdY9K2opAQ5z1 gS66eoFTYxsmKYIOp/XlZVspXB3J3o6wlHUQrPtwK9DnMlRZ8hdmUd8hrur/I0PvkEET J7+wTeR7ruUOzDdUvmuPWHEMFQpERt99JgIf5K2Ltp+IJxD/5wHN2G+E6TCRhM3cgeS5 /caNkcBSo5EJwaxlNEC6vGG5OO5XlZ5Rj4wBg5uOoga7nfS8IY5VeUZuG5+itu3o/rvR iTh1eCkGKBcWLWXn6cmqf4o8pRRlhFuCH8BNNoyBaefTL2rxtc/T5XfcUmEXYa2NzaCE Ik3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=yRqskO+9VsH8l91fSUgLapFhnVe89O1oXSNgL3pDTU4=; b=V4qK9G6QBubx5jPka/EY/7DW1mXdIJynKvfSaG3Elf3i4humzAAMapKaH+2aPYkgTj TUQwArVkNB2GPHVoyEA/kq89w7KtrZsDvsEo67u58sqQ0RWkbK8lEh76Uq5cy1sN7aZs PDvxlP/CghaqblNgcnpYFQ0awEOIiYCSHfPpLEJhN0ZX3vKrbzbn6Y8ilszqczkChDlL RLkiJ20xccfP1QreVqHGkqpSFCP/D6uz7l0d6afOXnnW6BECd6VcrIEuXIApjcj7alY0 bJ2tr6FsyFal65O34wyid9+O3u8pH0+jLRtWKkOJqloBr7Sipa0+yhfzNsXlyP66X8JZ j95Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=2M73R7Ie; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d18si22224170edy.362.2021.07.19.09.59.23; Mon, 19 Jul 2021 09:59:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=2M73R7Ie; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350473AbhGSQKY (ORCPT + 99 others); Mon, 19 Jul 2021 12:10:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:39392 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345487AbhGSPJY (ORCPT ); Mon, 19 Jul 2021 11:09:24 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 30825613BB; Mon, 19 Jul 2021 15:48:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626709736; bh=ZZadxa0w8dtzQqSSAXWpiz/dHqayTUoeHiO1uRLZiEI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2M73R7IeND0AoRG8ClVS/70h+0Pp+w0ZL0ywthDhh3eNpN3yFT4rx7/wzvJlaGxun A5XJqsJunCgIGlKHJ+ioNNwNqJ8zzr9X7DC4SC7R2X0TiWU9QBlosxlf8YpSIwqAE4 olG5J/t4zLmAvZ5IKrZARlL1o+MJPT8uJzXiTjDA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hulk Robot , Zou Wei , Guenter Roeck , Wim Van Sebroeck , Sasha Levin Subject: [PATCH 5.4 077/149] watchdog: Fix possible use-after-free in wdt_startup() Date: Mon, 19 Jul 2021 16:53:05 +0200 Message-Id: <20210719144919.536797026@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210719144901.370365147@linuxfoundation.org> References: <20210719144901.370365147@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Zou Wei [ Upstream commit c08a6b31e4917034f0ed0cb457c3bb209576f542 ] 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 Signed-off-by: Zou Wei Reviewed-by: Guenter Roeck Link: https://lore.kernel.org/r/1620716495-108352-1-git-send-email-zou_wei@huawei.com Signed-off-by: Guenter Roeck Signed-off-by: Wim Van Sebroeck Signed-off-by: Sasha Levin --- drivers/watchdog/sbc60xxwdt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/watchdog/sbc60xxwdt.c b/drivers/watchdog/sbc60xxwdt.c index c3151642694c..de1f7add05c3 100644 --- a/drivers/watchdog/sbc60xxwdt.c +++ b/drivers/watchdog/sbc60xxwdt.c @@ -146,7 +146,7 @@ static void wdt_startup(void) static void wdt_turnoff(void) { /* Stop the timer */ - del_timer(&timer); + del_timer_sync(&timer); inb_p(wdt_stop); pr_info("Watchdog timer is now disabled...\n"); } -- 2.30.2