Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2510621pxj; Mon, 10 May 2021 04:52:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxDIUi5mSPcv0bVe2xjp4PcLnTbkACcPZEVygs79YH1H9T8N3lKQ3CwbeYBnE8QlmKtimu8 X-Received: by 2002:a17:906:c1c9:: with SMTP id bw9mr25619048ejb.239.1620647577159; Mon, 10 May 2021 04:52:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620647577; cv=none; d=google.com; s=arc-20160816; b=NcrGEo7ttMhFdTCg+c2j+FcPdV3RzqEoHwABlZC2xZeThEXelbJazcL9XXwgkAvt1O TNgPc/jZr2IFah4zFOr+vAETHl3+8n2ahHu/NU762FK/dC+Sal05A3xKcPkdoTNJHsZ7 U9thP10pwbnBlV2A2o2BQmHZC/CdnX7ZfhJ54zquexRmKr2bzbberw9ejqqfESWKlaT6 q7INW8+InHhyuKu95vxDh1WuseRLMFZzOqOcfGcUiz8FTOK3SCy1kOIz7TdZOuvScI92 i325HhNtiJTySCFPkeziu9tAhSZdHOAZpxAE7yfkGG7UQOlSIKWmyjfVtiKdjPdBplUK vLjg== 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=vkyEKQyDVQCoqF4UxxUBrx4lK+wmcr7vPye4Da8KnD8=; b=ZFFba8/ndYChJeHHnfJN1F9FmU5gf+ERAazdjUxg+fsqSWhE+91SHT4mRBzdN7uIao 7Wkm6IYvu007EYxAPUeL/ulmbJtxzBW2NwaqiLEtJvAer3pg5Nr8UV2CXSvkLSXWrUBn iLNlvcVvc85UsmQheYtWKgRviT4ss43wdiRirEOLK9Gvegj3tdxLcsA031HhhJh+rFqA NIyw4S5Mt0gAVY1TgjXPTLF6LVtmtx6gm0u5Bb/JnJzWsiIHm7NU347LjSQWkM0mHppx L/cYRuZn/9Fm1HELkr9d2DTvGCRJOA6GNFJZhoqgN7Qu3hwnLWs4+Xb1/1LW7DhWLFH0 8v7Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=KxgVmi3b; 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 n15si13734150edy.288.2021.05.10.04.52.29; Mon, 10 May 2021 04:52:57 -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=KxgVmi3b; 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 S242183AbhEJLk7 (ORCPT + 99 others); Mon, 10 May 2021 07:40:59 -0400 Received: from mail.kernel.org ([198.145.29.99]:54598 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235052AbhEJK5f (ORCPT ); Mon, 10 May 2021 06:57:35 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 2C92261964; Mon, 10 May 2021 10:51:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620643891; bh=QjSBw+Y6XhXQaB/vrBFpm1kDfUcD7FqR92r8Xtah6ww=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KxgVmi3bSc8BVAkOtLIUsZDRQgG3LWWBsElBtqeFCkU6XTT/pn4B1KbWzHB9mkp9x f9mp5WYXKSfZPGWnKJnG8SzlHR+ETxM1uHhSH+2Y4wVqDlm8NYU5RNi22B7qtaGbni 9HajbyuZqt7XmdqshZfVgmFEXpnyvMDzztePwwsQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hulk Robot , Yang Yingliang , Sebastian Reichel , Sasha Levin Subject: [PATCH 5.11 201/342] power: supply: generic-adc-battery: fix possible use-after-free in gab_remove() Date: Mon, 10 May 2021 12:19:51 +0200 Message-Id: <20210510102016.729175727@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210510102010.096403571@linuxfoundation.org> References: <20210510102010.096403571@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: Yang Yingliang [ Upstream commit b6cfa007b3b229771d9588970adb4ab3e0487f49 ] This driver's remove path calls cancel_delayed_work(). However, that function does not wait until the work function finishes. This means that the callback function may still be running after the driver's remove function has finished, which would result in a use-after-free. Fix by calling cancel_delayed_work_sync(), which ensures that the work is properly cancelled, no longer running, and unable to re-schedule itself. Reported-by: Hulk Robot Signed-off-by: Yang Yingliang Signed-off-by: Sebastian Reichel Signed-off-by: Sasha Levin --- drivers/power/supply/generic-adc-battery.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/power/supply/generic-adc-battery.c b/drivers/power/supply/generic-adc-battery.c index 0032069fbc2b..66039c665dd1 100644 --- a/drivers/power/supply/generic-adc-battery.c +++ b/drivers/power/supply/generic-adc-battery.c @@ -373,7 +373,7 @@ static int gab_remove(struct platform_device *pdev) } kfree(adc_bat->psy_desc.properties); - cancel_delayed_work(&adc_bat->bat_work); + cancel_delayed_work_sync(&adc_bat->bat_work); return 0; } -- 2.30.2