Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2215684pxb; Mon, 18 Jan 2021 11:15:46 -0800 (PST) X-Google-Smtp-Source: ABdhPJzcDZ2XtndJYTMoRnP/SDmyiAwPg8SSKuhDJuxdgNs/8nIIacb3PKJERiocyBwi0uTeOk6j X-Received: by 2002:a17:906:19c3:: with SMTP id h3mr717292ejd.429.1610997345968; Mon, 18 Jan 2021 11:15:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610997345; cv=none; d=google.com; s=arc-20160816; b=dptfLEw8Itevotw0V5qo5c3jljDF/q58kuHMiqfWKSgRKYbDVrFC1GxbllSlRZfg0O dHz0hhE9DnKrBYf8wdHGKv0nbSYAq4jWUG/NqOkdZvN97U1MNUR+CYwRinSYa/0QOylD ebxiX9zkQE4ZL/iSf/WRNyrvH/vR0donNJgFZZJGmk3gOye6qigePMTbUIDZDe7mh2Nt QBT+Q7hn3Aj8pHuUrXlzxGnO1l2YiI/qqSehxkZLAS/GUgS2RTpX9MZKSIMayCFenXFo K3KjYNkDtWdYjsbEdnnjksYIIiKR+L4gPYPYwZA0mklp/TcLjO7mUzoarjm1ERehbCF9 AtKA== 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 :references:in-reply-to:message-id:cc:to:subject:from:date; bh=HzD/QcjQadIfZ2D/moZIEjtQw9+yL8JYx/Al1M43+jI=; b=jon+Cj2OyDhb7xYU6vOoHrsT4Tk4tvllZLM8495zFlzPBTivcg9va1H1Oh0D5jGSzm kxbuMh55ddLOKcRATNifWhr0mvxpKHbcAJKOS+uEIhPUsoiXmFWAlI8MMJH+qpfpiowX 1D7nSSDdVgHYE0t/FkT7Nwsp2m5Ejuas6VJHm9o5FNHpaCJxa6rXwJbx3FyL5nKn/9BH n5dfg9jasCyPpoCCfvHLvOJ4CTB4gTYV7T1iJtNut1wAdaaEd06opf3bJH6Wc0aA8gKe UxcKV3whebNS7vW6KXYgctTIrEJJMR8mq8LLAHigKAb0LQnjerrBmdSsdSpyA03pUYq0 ADgA== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y18si3114475edv.524.2021.01.18.11.15.22; Mon, 18 Jan 2021 11:15:45 -0800 (PST) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2436985AbhARTLu convert rfc822-to-8bit (ORCPT + 99 others); Mon, 18 Jan 2021 14:11:50 -0500 Received: from aposti.net ([89.234.176.197]:38822 "EHLO aposti.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390494AbhARLiv (ORCPT ); Mon, 18 Jan 2021 06:38:51 -0500 Date: Mon, 18 Jan 2021 11:37:49 +0000 From: Paul Cercueil Subject: Re: [PATCH 2/3] drm/ingenic: Register devm action to cleanup encoders To: Laurent Pinchart Cc: David Airlie , Daniel Vetter , linux-kernel@vger.kernel.org, stable@vger.kernel.org, od@zcrc.me, dri-devel@lists.freedesktop.org, Sam Ravnborg Message-Id: <1BO4NQ.1RZAXLMVC01T@crapouillou.net> In-Reply-To: References: <20210117112646.98353-1-paul@crapouillou.net> <20210117112646.98353-3-paul@crapouillou.net> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Laurent, Le lun. 18 janv. 2021 ? 11:43, Laurent Pinchart a ?crit : > Hi Paul, > > Thank you for the patch. > > On Sun, Jan 17, 2021 at 11:26:45AM +0000, Paul Cercueil wrote: >> Since the encoders have been devm-allocated, they will be freed way >> before drm_mode_config_cleanup() is called. To avoid use-after-free >> conditions, we then must ensure that drm_encoder_cleanup() is called >> before the encoders are freed. > > How about allocating the encoder with drmm_encoder_alloc() instead ? That would work, but it is not yet in drm-misc-fixes :( -Paul >> Fixes: c369cb27c267 ("drm/ingenic: Support multiple panels/bridges") >> Cc: # 5.8+ >> Signed-off-by: Paul Cercueil >> --- >> drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 10 ++++++++++ >> 1 file changed, 10 insertions(+) >> >> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c >> b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c >> index 368bfef8b340..d23a3292a0e0 100644 >> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c >> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c >> @@ -803,6 +803,11 @@ static void __maybe_unused >> ingenic_drm_release_rmem(void *d) >> of_reserved_mem_device_release(d); >> } >> >> +static void ingenic_drm_encoder_cleanup(void *encoder) >> +{ >> + drm_encoder_cleanup(encoder); >> +} >> + >> static int ingenic_drm_bind(struct device *dev, bool >> has_components) >> { >> struct platform_device *pdev = to_platform_device(dev); >> @@ -1011,6 +1016,11 @@ static int ingenic_drm_bind(struct device >> *dev, bool has_components) >> return ret; >> } >> >> + ret = devm_add_action_or_reset(dev, ingenic_drm_encoder_cleanup, >> + encoder); >> + if (ret) >> + return ret; >> + >> ret = drm_bridge_attach(encoder, bridge, NULL, 0); >> if (ret) { >> dev_err(dev, "Unable to attach bridge\n"); > > -- > Regards, > > Laurent Pinchart