Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp4159610pxv; Mon, 19 Jul 2021 18:50:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJynFKlfhSf9epe99JysSWcmj1SIuh5jfUcvKI0EvSXjsRB+ADDBg/rdD1vuQKUFOFHEnDOS X-Received: by 2002:a17:907:9602:: with SMTP id gb2mr30381203ejc.354.1626745808369; Mon, 19 Jul 2021 18:50:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626745808; cv=none; d=google.com; s=arc-20160816; b=lj2cTVUFelLKYbsVzfPLlniZjHEFGMGR1wdiKRcrHf25d6A0gAcwQRD/YRXRH1F7Fi bIH1HRuCEs2lWc4FEVfOyG6SToLYN9EjpoVR/O/LDfMGXLCc1CqNT5C/2QI9nc2yAMCn DWAuGd79MVjSUlTttHA8e0/+qjtsxYK2iZXQIi95sCBDAPIDO6Mj/8ufSjyklJ2jamXP vyvje56OjuHHcfeKBE+6UeyOv1cqSA6xp6w5AnlWR2wjk25tq1ljXVK+RrEwEkOpeKzh KR/fBsGVxPTYpdEBWs2PEMUJghwc4JUks8wTevPe7AQA5/ZgjBKGtkcx9/ZPPTpvmudq Q7uQ== 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=rzfRCSIWDcRDjawvMRpRMhnPdGRD6L4pAoLUIwk8qEc=; b=OnT6J7PxAWLfxUxjQoc5Ryr4Sr5BkBJyw3bATYRhMyabXufmkTQoTpZdG3E8+MtWx/ /Kv8dbR/XNSXfepUcKN3n8DtNoR+LQFNmtiO+l52wvuLC08B3p+0J1Cw8JOznJyCWkfy Lljh2EyIo7IGzg4XfPfJQgOfB09w8Vmjg4334ay+gfxnUBHuAtrMue5Iv1T2JMTrbv1J jxfixpmuKMGkOWp3OHQjyAvwLJyL04LC92WdnMuK8ALi8m9f6qSl8Z/NpRc0etw/fvtE BpH3v8C3C3x33VhMBs35wSd9cpOFO6OM0MiIhOuqVoFWzXFTo/WV7dt1RtNwbgPhDhbY ZxVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ICw9yJQy; 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 u15si21638731eju.396.2021.07.19.18.49.46; Mon, 19 Jul 2021 18:50:08 -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=ICw9yJQy; 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 S1344833AbhGSPJL (ORCPT + 99 others); Mon, 19 Jul 2021 11:09:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:40444 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343934AbhGSOsg (ORCPT ); Mon, 19 Jul 2021 10:48:36 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id F0BF061285; Mon, 19 Jul 2021 15:25:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626708333; bh=8vf89cqAEiEpOFAna+3saqsBdZd00cUqtRl2GaRnTcw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ICw9yJQyDOBmWNL7hA/sbMFWcyMrRDt5htSdpqwpt0oDYdr/+soxVRr6p4lBJrff6 K5Z21QblDZW32a5Xz2TPRBdi84DOQV0scSFxmt97KPr2gWwC63drJoP8VV2HYZPM5O ru8UwODriREzQv8wrncMvj5p63OcPRqxgW1WowbI= 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 4.14 271/315] watchdog: Fix possible use-after-free in wdt_startup() Date: Mon, 19 Jul 2021 16:52:40 +0200 Message-Id: <20210719144952.333524863@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210719144942.861561397@linuxfoundation.org> References: <20210719144942.861561397@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 2eef58a0cf05..152db059d5aa 100644 --- a/drivers/watchdog/sbc60xxwdt.c +++ b/drivers/watchdog/sbc60xxwdt.c @@ -152,7 +152,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