Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp2397635ybt; Tue, 16 Jun 2020 05:13:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz8kAEBe7OYeuoM9F0FerXx9i+D3T8P2SsLZ1RWbKbLBgb48KW5OYeG7Rx4SUnV+EE6vG9X X-Received: by 2002:a05:6402:1c8b:: with SMTP id cy11mr2204047edb.122.1592309603944; Tue, 16 Jun 2020 05:13:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592309603; cv=none; d=google.com; s=arc-20160816; b=Xhps5sC2ur0yXIUjgJIGbQcvb65ZM91e1WsddLf0CN10g1CGKlu0pM9A+irgSE+dCx JyXa5fdmi4iMKoGvv0L/ycJQ+s66XLecjl5eSiWWhSJlAXpaDYS7D6NHdNrlWwn2Q71i 6MKXsw+O6TDC1nFQPKLaTcV6uEuJOXge/yTD64gH4yiROo9Y8Xx14thNeN/VP/kbrQKd H7u8HQYO9U8aVokphz1zKZ0fqijQhhdshRcN78yy3tnv9WdYAfmJtYzpJkoFM9XYxosk Ue0sCUjp38KEd4r/V6C0RNJw2fRJJqj8jPPVWEt11LTtQH2R6Q4HhVzi8ejxUTgOVL2A KzTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:mail-followup-to:message-id:subject:cc:to :from:date:dkim-signature; bh=5QWjCps9FQO9o//U7Sgj6WRAuJJOpmMo6AsQMUTmG1I=; b=qj1EXuswxkac3+grT4676OjNkERoKMtNYJvoKOxtSVeiIgoDWStPTBLgQyPCnbFr5q 9bGSrAHYhr9LUDzfyPyQlaAcdOZGdV4iv6vC7bMWfuQlXB+E7SNBo9rlG+FEL/Twq6Az mDxrhu0VEGy31nIR6m89Ch+FHhBtZyBlOZr+bNGzj1QMR+ihNrT5vz4AoYVmSrn8GrKM 42LrAm+14Fhgj7S1eXy17FXMcM63HmPi/q3hublDkjQVABG5Nvjwr1LWg6fBfY3YPWIT lb6bT9lMEneCqvrjvsYrY7Xzd8P+/yDYtOHFQelDFlBJOeciL4QkQeaLJ2GKRBlqWRlq S2Kg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=FDxXN5LN; 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 y3si10183857edq.381.2020.06.16.05.13.00; Tue, 16 Jun 2020 05:13:23 -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=@ffwll.ch header.s=google header.b=FDxXN5LN; 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 S1728131AbgFPMLA (ORCPT + 99 others); Tue, 16 Jun 2020 08:11:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725775AbgFPMK7 (ORCPT ); Tue, 16 Jun 2020 08:10:59 -0400 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A240C08C5C2 for ; Tue, 16 Jun 2020 05:10:59 -0700 (PDT) Received: by mail-wm1-x341.google.com with SMTP id q25so2829368wmj.0 for ; Tue, 16 Jun 2020 05:10:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=date:from:to:cc:subject:message-id:mail-followup-to:references :mime-version:content-disposition:in-reply-to; bh=5QWjCps9FQO9o//U7Sgj6WRAuJJOpmMo6AsQMUTmG1I=; b=FDxXN5LNMQhJ+U0Lbq6FL19TnObJXisz0N6E5K81GMnjKG7EeF+tQDAYsgtjlv3k9j IvIzjcQoJM74t0X6StRdDHj06/FHTN9r/gtA7/R6eJicd3XRUrtXx5Ymiz/ATd+LroLA sRLA8+1uGBypwIpt7WFzdzF3fkQ4CAlYxyeRg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to; bh=5QWjCps9FQO9o//U7Sgj6WRAuJJOpmMo6AsQMUTmG1I=; b=D6Dr9af/Kyzpi8y7oeIj+N9PFb+PkC8xzApa07v0aAHF67pBbYZgFIBfVu5X2hRr6P sH9PMKf/xNpPme5GIpB2DAnZD3zXksvgJlFp+ASYnm6NCFupdXbCD4UnTl+vzSgvGDov E4YZ6ADS2ltoGbWfSfMPZqs/UJ+vqLKwL0vg8DsTQA2QuT66FII/4OHe1FHT0yer7gqN AtSbNPYr4ldGb+7F+L5d90H53aE5maJQ37AefzqXetMFM+R6RAVuVRN1J16Rp0Y+d9ya TF4n4alQSRjmBRt8K43Du2k64S81hTqma1aDFWZXNFfATN5sbaGc0bvHMmyt+L7sGFeo 7KMg== X-Gm-Message-State: AOAM530jhbq7KX61i6JKGxoNRUnq8YZHZqKYSHMLV7zf5ZcqfbV647O0 6V0LlYM3a8JM3yp2hLGzELH4SA== X-Received: by 2002:a7b:cd10:: with SMTP id f16mr2984082wmj.149.1592309457330; Tue, 16 Jun 2020 05:10:57 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id z16sm28964586wrm.70.2020.06.16.05.10.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2020 05:10:56 -0700 (PDT) Date: Tue, 16 Jun 2020 14:10:54 +0200 From: Daniel Vetter To: Laurent Pinchart , Greg KH Cc: Aditya Pakki , kjlu@umn.edu, wu000273@umn.edu, Andrzej Hajda , Neil Armstrong , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, "Rafael J. Wysocki" Subject: Re: [PATCH] drm/bridge: fix reference count leaks due to pm_runtime_get_sync() Message-ID: <20200616121054.GM20149@phenom.ffwll.local> Mail-Followup-To: Laurent Pinchart , Greg KH , Aditya Pakki , kjlu@umn.edu, wu000273@umn.edu, Andrzej Hajda , Neil Armstrong , Jonas Karlman , Jernej Skrabec , David Airlie , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, "Rafael J. Wysocki" References: <20200614024005.125578-1-pakki001@umn.edu> <20200614134655.GA5960@pendragon.ideasonboard.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200614134655.GA5960@pendragon.ideasonboard.com> X-Operating-System: Linux phenom 5.6.0-1-amd64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Jun 14, 2020 at 04:46:55PM +0300, Laurent Pinchart wrote: > Hi Aditya, > > (CC'ing Rafael) > > Thank you for the patch. > > On Sat, Jun 13, 2020 at 09:40:05PM -0500, Aditya Pakki wrote: > > On calling pm_runtime_get_sync() the reference count of the device > > is incremented. In case of failure, decrement the > > reference count before returning the error. > > > > Signed-off-by: Aditya Pakki > > I've seen lots of similar patches recently. Instead of mass-patching the > drivers this way, shouldn't pm_runtime_get_sync() (and similar > functions) decrease the refcount on their failure path ? That would > require patching drivers that already handle this issue, but I believe > that would cause less churn, and more importantly, avoid the issue once > and for good for new code. Yeah the current interface looks rather dodgy, generally drivers aren't expected to clean up if the first function failed. Rafael and Greg, what's your take on this here? See patch below and Laurent's comment above. -Daniel > > > --- > > drivers/gpu/drm/bridge/cdns-dsi.c | 8 ++++++-- > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/bridge/cdns-dsi.c b/drivers/gpu/drm/bridge/cdns-dsi.c > > index 69c3892caee5..583cb8547106 100644 > > --- a/drivers/gpu/drm/bridge/cdns-dsi.c > > +++ b/drivers/gpu/drm/bridge/cdns-dsi.c > > @@ -788,8 +788,10 @@ static void cdns_dsi_bridge_enable(struct drm_bridge *bridge) > > u32 tmp, reg_wakeup, div; > > int nlanes; > > > > - if (WARN_ON(pm_runtime_get_sync(dsi->base.dev) < 0)) > > + if (WARN_ON(pm_runtime_get_sync(dsi->base.dev) < 0)) { > > + pm_runtime_put(dsi->base.dev); > > return; > > + } > > > > mode = &bridge->encoder->crtc->state->adjusted_mode; > > nlanes = output->dev->lanes; > > @@ -1028,8 +1030,10 @@ static ssize_t cdns_dsi_transfer(struct mipi_dsi_host *host, > > int ret, i, tx_len, rx_len; > > > > ret = pm_runtime_get_sync(host->dev); > > - if (ret < 0) > > + if (ret < 0) { > > + pm_runtime_put(host->dev); > > return ret; > > + } > > > > cdns_dsi_init_link(dsi); > > > > -- > Regards, > > Laurent Pinchart -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch