Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2534785pxj; Mon, 10 May 2021 05:23:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyXh2O790Yq36K2GiXf1V+NUu+h+cJjtNZxd+fGQutJAQjKkw5cMbUnsB7JlgY5KCi5mrqZ X-Received: by 2002:a92:c7a9:: with SMTP id f9mr20167731ilk.255.1620649396101; Mon, 10 May 2021 05:23:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620649396; cv=none; d=google.com; s=arc-20160816; b=Klm7QOFQCvkXArNs/aosUJogMar+iNNi7NlALJ4nLszeNgrtuhOkwxIvodHbvfns4Q pIq2F+QXq67f6CegjQ+ESCCmHdcTUCYQt7Lo4Iy/mcqwdZW+9UTIlWfKiv2S26VL0mET 9qJzF0VMxr70OrpUGpox2nFaiLVErtqAPeDsabRjK5HTNpkLZJIezDphbf8IUGgaceHm bnPtt26w0zLjuJcOdqQ5rcD/fayQRY5jvt1yMZoDbRT5F6nmI69fNIqUyEvRVmv9/C5m naH8VsK8m2BCzD6LmPNAHfPnZs1luB552ed210viqAjs/+HkT3v17o3sb8NR7ZHReDyN qt6A== 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=HQwBmlmFZ0mU1BTc7YZuJEkr0TyyVoiPaiusQ7HgXEJIQXk0YplfNU1R8wGNph/qXH +Y9DiGiVauH+tnEhXdIqwRJdrDiJc1KMnaBYEJ4c2WiLZU6diKlCZwK1fkzCj3E/I+My VVDfpD8mm03fbHcbQbAMPYv0DS42dcVnv+UsVnxyenj1HJzEfbni6djA7FWERqznLKYP 4sj+X6XtTS6ah/kcE/vgxkRC6hXtmuNghZd3km327bc+q8C8njkkWIkHGqGJq1A6zqyq kR2EBqMZ3C51oTMtGBL38ZnG3wfoRWvoyucG0xydAhqDLO7qwC4fWRf1p26L+GuLKDhB CV7Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=LgKawN8p; 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 r5si16969765ilc.82.2021.05.10.05.23.02; Mon, 10 May 2021 05:23:16 -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=LgKawN8p; 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 S239191AbhEJMTD (ORCPT + 99 others); Mon, 10 May 2021 08:19:03 -0400 Received: from mail.kernel.org ([198.145.29.99]:45768 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236709AbhEJLIj (ORCPT ); Mon, 10 May 2021 07:08:39 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id A72E6619D4; Mon, 10 May 2021 11:03:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620644615; bh=ZSqH0HKaES/cRWmAqrfBEeb5+bXwFPujDyAIfNZi+lw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LgKawN8pzW2LMVDQZvY4H8yzm9216yghLgEcnUzd/ewQ/boGGCUHw88FSD825y2Sp EGpSKyLfDfqoPafQHMDeui5K+GjaLvW1fIMcLz78TSx+W7uyI0AZabGec3wSRf94ud 09y7a/l4RmdZBbYDwR3j0Zt5tiqs38OFq0uXvV74= 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.12 118/384] usb: gadget: tegra-xudc: Fix possible use-after-free in tegra_xudc_remove() Date: Mon, 10 May 2021 12:18:27 +0200 Message-Id: <20210510102018.780846576@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210510102014.849075526@linuxfoundation.org> References: <20210510102014.849075526@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