Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2702150pxj; Mon, 10 May 2021 08:52:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyADzDkCq4uVBtTHP4jStnQGjWq/i/BifOUXXtGA4FcgkLHeNO4JWXMp5gLzzgE+1vv6PR/ X-Received: by 2002:a05:6402:518f:: with SMTP id q15mr30519641edd.345.1620661941056; Mon, 10 May 2021 08:52:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620661941; cv=none; d=google.com; s=arc-20160816; b=wSy8NiN65ibXhBhk5ODkQKkv7UzkCa3NKgCkwaVm0BsDACd0yeMHdnLNOwYHJ9A7pB 0h9rlZ/lEEFNpc+oinupHgwdehywn2ZZbNnrB1fkVxWjq7TWRfB8hQG58xTHMSGvLBhb 0HKllr3SjBAod6XkKk/Cf5brQs1w03L7EgZ1/9dO4pRRYccN8h3D1+lgmkxeqISkRzQo ZCX4ow2p8uUKRz9ABCqMv0Cj4N8sLwoClJ/zedJGgCiHUGq2ME5wevjon+g7XPc2w9fS ZnMRR6vvsUaMACICXW9Qts9zMg3XsvLl3e0JlZI5agS7pz2icxAMT2CVpZpdbPoACKm/ sduw== 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=7sTUaPvs86auWscrtzMwSjD9ZNuS3rH9sJE8NAAMUZ0=; b=yWDttCi+7b9PRYAAeylDwuOBqyO4kXqM35Le7AdRVyzqatjCz2oFx4DSsTBZRT7u8/ yBbgoDOIjAH7ulDoybcizid/jlIsnKvhFMESveGJhJATEwlE8fRJi0SKxhRgwLVa0/Xe umxYD1AVUGlOpBbT8+KQSigYGUGiFzjuCMZB5XX4kHanWQ+ilpCHNFcb/V5rNQVV8aL5 +QBzuvPXOEcsBxr2KqV1nEvzySXdg8GON1DppY28tkxYOa4tRQkD4SkWlHdNvWx+42x7 c/gv1MWEXJQclln8RYeyhdHEbGYFRRSoeR/12d6B6N3/OtfXYupF7mLx6pf4dEYy0vXX We7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=uSnlXbp7; 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 i19si13796648ejv.399.2021.05.10.08.51.57; Mon, 10 May 2021 08:52:21 -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=uSnlXbp7; 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 S240051AbhEJL2V (ORCPT + 99 others); Mon, 10 May 2021 07:28:21 -0400 Received: from mail.kernel.org ([198.145.29.99]:52794 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234660AbhEJK4q (ORCPT ); Mon, 10 May 2021 06:56:46 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id AE800619A1; Mon, 10 May 2021 10:47:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620643669; bh=ZSqH0HKaES/cRWmAqrfBEeb5+bXwFPujDyAIfNZi+lw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uSnlXbp7avvkutv1crK7csYp+MkcdeygnO0lB6GwmTzB6Fl/mNmVsIj8BEIncfqB7 xhcDm4wuExJ6/fwZ/AFQ3grL9LrOkD30H5MRdFO/TXEfFWbHbI+5Su3zRqFM2MU7xN 8gjREhIv8mH1dCiO2oWDAGP1G3dVoGxPO0RaKrl4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hulk Robot , Yang Yingliang , Sasha Levin Subject: [PATCH 5.11 110/342] usb: gadget: tegra-xudc: Fix possible use-after-free in tegra_xudc_remove() Date: Mon, 10 May 2021 12:18:20 +0200 Message-Id: <20210510102013.726499174@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 a932ee40c276767cd55fadec9e38829bf441db41 ] 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 Link: https://lore.kernel.org/r/20210407092947.3271507-1-yangyingliang@huawei.com Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/usb/gadget/udc/tegra-xudc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/gadget/udc/tegra-xudc.c b/drivers/usb/gadget/udc/tegra-xudc.c index 580bef8eb4cb..2319c9737c2b 100644 --- a/drivers/usb/gadget/udc/tegra-xudc.c +++ b/drivers/usb/gadget/udc/tegra-xudc.c @@ -3883,7 +3883,7 @@ static int tegra_xudc_remove(struct platform_device *pdev) pm_runtime_get_sync(xudc->dev); - cancel_delayed_work(&xudc->plc_reset_work); + cancel_delayed_work_sync(&xudc->plc_reset_work); cancel_work_sync(&xudc->usb_role_sw_work); usb_del_gadget_udc(&xudc->gadget); -- 2.30.2