Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2509213pxj; Mon, 10 May 2021 04:50:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz10qnHRg6QKRYxj+ZO78/PjfsX9KCTMSrnMTHcZAyuSmePNt8plktAaO2oZYVcentHh1XA X-Received: by 2002:a17:906:711a:: with SMTP id x26mr25142559ejj.125.1620647452715; Mon, 10 May 2021 04:50:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620647452; cv=none; d=google.com; s=arc-20160816; b=CUGP7c5KNYhAy+cSt5JYIBsCjht+aDQUBlxVjEOoGUvvrh+5E/lJx0rgJza7xEEsBL A6bNAObHo36L3RvnbZd2wYcJiiHkgmwR5Qizwjctf17yPyITd8nsJUQJTMv76HysutwF y1Eh9Lo6V1MCnSbhRTQCrfk/+qz3cJNKEae5YfDz4H4EzDxZzioWoFpP9zYrSLUyR8E2 isAcW0rcCm9/7I08jvYTbn/MRog2DI/2/G25+lF7dWxwwamP9xCNtkXm2Ey/ZC0CMm5v sVDDbG0YSmrY9lIx1K8vQ3QKkUO+PhC6MIfcgG/JXkTKQz6TDdW0oiteb5GtMdLMBDAi weCQ== 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=GGNUPHnVg41zb8+r4hjsQrRAqADesB82CBXJNykj+oo=; b=QI8k+Y6ouRgRp+EbUZ7q67e9lsKb5fvKEXN4o6vPAvO8lz90Uo553DdilZVH5gjCvY K3sXTlSeiYiPzhr0D6RiynFDJ8u8k2F51yrTdxdqjY3it/Os9C0mbkf9FdwAnw2xrWBH mX5AOye/XaEH0b/rx7QeRd1L1V2x5l6N9Jv2qLsFYNheCBYtS3ysn0YkGVtPVyiXczhq PrL5Ua2TaVol+JeZh10s+CFrBUJS2RIXtd9K1RHOKIA9DGyHJwYYsi/idAqXErqzUOdC r89+nkJCoz8uuJ+NwnbwHLoOrME7u6kpiasekesk2ESDUK8UdL6Ps9G3ztcThnjAEWfd TgeA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="u/nheXjL"; 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 e7si13105477ejj.140.2021.05.10.04.50.28; Mon, 10 May 2021 04:50:52 -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="u/nheXjL"; 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 S242233AbhEJLlQ (ORCPT + 99 others); Mon, 10 May 2021 07:41:16 -0400 Received: from mail.kernel.org ([198.145.29.99]:52738 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235066AbhEJK5g (ORCPT ); Mon, 10 May 2021 06:57:36 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id C92D761977; Mon, 10 May 2021 10:51:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620643901; bh=TbnfRyrVPiZhBN1/T3YrOQ5IbnGguP1qyaLCMaCnOYc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=u/nheXjLt4oLELEcmjnbZGJpvx8dQ2ETHhzoiUIXNp6jwq8YVR+6Pi1ngNTx9os+f /vXGeWE57lggiXMlyPa6OOsHVAnvVxxgMvp7qxyhqnOnmweVFXrY1E4/t6h3/jYXp6 QTYNpFPSTkaDbW4Kb2KtJdLUzyjlzyiBUd966o20= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hulk Robot , Yang Yingliang , Hans Verkuil , Mauro Carvalho Chehab , Sasha Levin Subject: [PATCH 5.11 205/342] media: i2c: adv7511-v4l2: fix possible use-after-free in adv7511_remove() Date: Mon, 10 May 2021 12:19:55 +0200 Message-Id: <20210510102016.862983152@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 2c9541720c66899adf6f3600984cf3ef151295ad ] 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: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab Signed-off-by: Sasha Levin --- drivers/media/i2c/adv7511-v4l2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/adv7511-v4l2.c b/drivers/media/i2c/adv7511-v4l2.c index a3161d709015..ab7883cff8b2 100644 --- a/drivers/media/i2c/adv7511-v4l2.c +++ b/drivers/media/i2c/adv7511-v4l2.c @@ -1964,7 +1964,7 @@ static int adv7511_remove(struct i2c_client *client) adv7511_set_isr(sd, false); adv7511_init_setup(sd); - cancel_delayed_work(&state->edid_handler); + cancel_delayed_work_sync(&state->edid_handler); i2c_unregister_device(state->i2c_edid); i2c_unregister_device(state->i2c_cec); i2c_unregister_device(state->i2c_pktmem); -- 2.30.2