Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp251519pxb; Wed, 20 Jan 2021 06:18:29 -0800 (PST) X-Google-Smtp-Source: ABdhPJyZES2qL0PUajLU0X8ZB1Z/UTcOVLUQKThEO2B1eDwW+/KoJM2Ly+8BSN9ypafsR4m4nbYL X-Received: by 2002:a17:906:3b16:: with SMTP id g22mr6063072ejf.504.1611152309144; Wed, 20 Jan 2021 06:18:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611152309; cv=none; d=google.com; s=arc-20160816; b=WNfzJXG1nO3mFTagaMaZkY6aNm8oKMX28P/IUl2PEI87jfh/vjLfzaXwbahrj0gBBj 2bt+rUJI80ZOkS2ve9AV2bDMTTuz2YXD2Aj/8KZChiwaXEQBNt6Hff+7hF0lQ1yAwzzO guDGP3nUeMA+ga8uQf3jKU7dEs//Jcctvam8iy+irfLaOrYQFVXP+YAErPxLOYpzMpga OJ+NwiNlJOuB170fEF2aGvbveEg4jX7nbHJoicxe2d4LjGAmsDcTdRENsZBSYeKl9z9i rU1G2cHPh03B3fRbGMmVilIl9DjRjKU2qdpuT5QzaoM+9MT5VsCVJLXyeNpUBRbhLi0X IzvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=evwLpKMs/Q04HfoyBMd6+/dktMNHRP3J0svCExuNnHQ=; b=YCtPagyFpWp3ktDM0CeW/e7p+9j8I53isJW2I6L0WSEwseV8hKh5zkHvJq0jtbjPkt foS5HidViBRHEcItCG/pj+n2vUByI0qwtC3MXf/5/RBHLhzN/oldsue/HR+GKciY1tqx Xzdc9a81j2oiQCPSmrZz9t1VmsbR6Ei1FhPL2gdebm1LN8IhwKZ/k4t37uvW0zGr1qxG FzP6DM8kcR7ZyCPoL2gvaYUZexACAn/scb299ignaTkveMdF/cvwH9kV1YvDMPbpCU5y aEOE0/8C0qXsGYVkDiB4knIOXohsVLjHydpCaxo5+dxv0A9jsRcXPF/aIUrk91B1tbeW eXDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=gjoMlQDX; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v12si878626edy.585.2021.01.20.06.18.03; Wed, 20 Jan 2021 06:18:29 -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; dkim=pass header.i=@ffwll.ch header.s=google header.b=gjoMlQDX; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387641AbhATORT (ORCPT + 99 others); Wed, 20 Jan 2021 09:17:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34164 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727696AbhATNCS (ORCPT ); Wed, 20 Jan 2021 08:02:18 -0500 Received: from mail-oi1-x236.google.com (mail-oi1-x236.google.com [IPv6:2607:f8b0:4864:20::236]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 12E7EC061757 for ; Wed, 20 Jan 2021 05:01:38 -0800 (PST) Received: by mail-oi1-x236.google.com with SMTP id q205so24854538oig.13 for ; Wed, 20 Jan 2021 05:01:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=evwLpKMs/Q04HfoyBMd6+/dktMNHRP3J0svCExuNnHQ=; b=gjoMlQDXxoLKyVqfmWYc+fQsUBlfTlV9o5PJnH+Fw3wT6GK9N8OlzvgssUU0vb0fZH lnyuUY13b3P8wylC1s1XZ51WGymbIFWbcPL/0lXA0Z7SliOOw3K8jFrpKcp+79daAMjG 3G0usdR1gu6MsBvz81d0Wq6+o038KK/qKvaQI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=evwLpKMs/Q04HfoyBMd6+/dktMNHRP3J0svCExuNnHQ=; b=fHaOgAIFkYMK6QDm+dmij9mCyuPFQf4CVUSKy4qyZcaiC5T5gzJ9COiFBmrxJ+ffgS MsinjhRow0t/EylMjo/f+Lr1GcaLHJb9UrlTWPmMslQ03uYEaeNeZCsbz75jmDUdky7Q 7t2HZuAJyo0HIN//gaVd0tAwNsiG0QZQ2ObZX934A+bkGWmioAeuppPnUGqyQjN3zncm WxPw96YHu91oXjFBvIfCXTtRbSCUdn0u4G76+uy7w0JPmphyvx8URmN2GAOnThjDzJqK L4gMRRmLE3Cxf3nMpdMcg16XVZIIUBk0wMoXWQDWx0+K267hCTxvVU8+kAyY/jqM0M5a dkFg== X-Gm-Message-State: AOAM530jXBk+z0KWK/HSPso9afzyKG2dRH0CtVTQINPZLWGAN22tryV7 GEIh9l2D7hph5lHDklMGhMxc5ZnRXRD9x8EF0K5TPw== X-Received: by 2002:aca:1906:: with SMTP id l6mr2714101oii.101.1611147697279; Wed, 20 Jan 2021 05:01:37 -0800 (PST) MIME-Version: 1.0 References: <20210120123535.40226-1-paul@crapouillou.net> <20210120123535.40226-3-paul@crapouillou.net> In-Reply-To: <20210120123535.40226-3-paul@crapouillou.net> From: Daniel Vetter Date: Wed, 20 Jan 2021 14:01:26 +0100 Message-ID: Subject: Re: [PATCH v2 2/3] drm/ingenic: Register devm action to cleanup encoders To: Paul Cercueil Cc: David Airlie , Sam Ravnborg , Laurent Pinchart , od@zcrc.me, dri-devel , Linux Kernel Mailing List , stable Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 20, 2021 at 1:36 PM 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. > > v2: Use the new __drmm_simple_encoder_alloc() function > > Fixes: c369cb27c267 ("drm/ingenic: Support multiple panels/bridges") > Cc: # 5.8+ > Signed-off-by: Paul Cercueil > --- > > Notes: > Use the V1 of this patch to fix v5.11 and older kernels. This V2 only > applies on the current drm-misc-next branch. > > drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 16 +++++++--------- > 1 file changed, 7 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c > index 7bb31fbee29d..158433b4c084 100644 > --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c > +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c > @@ -1014,20 +1014,18 @@ static int ingenic_drm_bind(struct device *dev, bool has_components) > bridge = devm_drm_panel_bridge_add_typed(dev, panel, > DRM_MODE_CONNECTOR_DPI); > > - encoder = devm_kzalloc(dev, sizeof(*encoder), GFP_KERNEL); > - if (!encoder) > - return -ENOMEM; > + encoder = __drmm_simple_encoder_alloc(drm, sizeof(*encoder), 0, Please don't use the __ prefixed functions, those are the internal ones. The official one comes with type checking and all that included. Otherwise lgtm. -Daniel > + DRM_MODE_ENCODER_DPI); > + if (IS_ERR(encoder)) { > + ret = PTR_ERR(encoder); > + dev_err(dev, "Failed to init encoder: %d\n", ret); > + return ret; > + } > > encoder->possible_crtcs = 1; > > drm_encoder_helper_add(encoder, &ingenic_drm_encoder_helper_funcs); > > - ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_DPI); > - if (ret) { > - dev_err(dev, "Failed to init encoder: %d\n", ret); > - return ret; > - } > - > ret = drm_bridge_attach(encoder, bridge, NULL, 0); > if (ret) { > dev_err(dev, "Unable to attach bridge\n"); > -- > 2.29.2 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch