Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2548842pxj; Mon, 10 May 2021 05:42:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz2B8gO5iV02thIz2dMFyCcwtfe8wYVb3CpLBAo5M1XKlCs/O1GPk4sneterm1zVjABwKnC X-Received: by 2002:a17:906:6d57:: with SMTP id a23mr25059380ejt.197.1620650522689; Mon, 10 May 2021 05:42:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620650522; cv=none; d=google.com; s=arc-20160816; b=IXD5Hx8WF2jPGwWQASjEWeV09RdGNzgZJd6xGs5BMqeDqbX4B573kOiLLfzyGBRjTh 06fUcZteiVM2L72M/QsT6MmXwBaJDQQjNdC16pKEwLam57SA4DNFyR6BGn4QQdBVpLSc SazDKwF46XvvrWV9o0fM8YbIJEjfRBgHygP2xQhya9S13rw622hVA6nXLzw5fnEopdUT 14EWHKxCERcBI7X7tpnzzDRK/MxvPi+x2Zm6bGarv6T65GuxYU0XqVk97FKtym9lF0FP 5v5IUHUGQWuxld//Vba7HhNi19hZKMUCHw6XSMl2gQdIebRcoxbCgRaNHlkPeT0Uyfqa tuzA== 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=VtYr2y5Oo/4fNygBodtJfFGw1Itf0BWKbygrS6fpoqGKVu3+VnrntCFgT+aYOEHViG rfEh+3WZYA2GTvyIPoFU6ciQIMmrAjIaJCL80uWYQM4j0nEpFYG9curOoH6gbd+RO4zZ VKOPJfBzfQ2/HFz6zg39f1rPCeS5BWUwbB05+ahgdEt2CWpyhQ3GCm1oa1SzwV/7fE/X 8vKci/qvkmWPdFheXouy90gkt4mdwuEXHetCD+3SUAHK4lPiTmdOWDnjAMEIar03i8xH 8riDh2mK3EnmmF5VM35q4MtS5qcKJIKXa69LLUoFNxNAX1c/OB303pioY6idZGr0syXS YJCA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=qkk+QAul; 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 t6si12854828ejj.37.2021.05.10.05.41.39; Mon, 10 May 2021 05:42:02 -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=qkk+QAul; 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 S1346635AbhEJMcH (ORCPT + 99 others); Mon, 10 May 2021 08:32:07 -0400 Received: from mail.kernel.org ([198.145.29.99]:49986 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237202AbhEJLLe (ORCPT ); Mon, 10 May 2021 07:11:34 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6FC7F613C9; Mon, 10 May 2021 11:08:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620644888; bh=TbnfRyrVPiZhBN1/T3YrOQ5IbnGguP1qyaLCMaCnOYc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qkk+QAuljucJwucaRUvOfEI5q1wxZOnNCqj3JmIz+gU8rzlc10FlD8UF1Ga4vVSka fSBPVMMr/crg5BgzPyDkr+eMVAIwjVTrFrA+PesShQ/Y3sXAZcmvOWItOQndbEms6W 8mbnofyApC3GgCZ4BUMRNcEMb6gu4KDSpZm5wPt8= 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.12 231/384] media: i2c: adv7511-v4l2: fix possible use-after-free in adv7511_remove() Date: Mon, 10 May 2021 12:20:20 +0200 Message-Id: <20210510102022.510898044@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 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