Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2418272imu; Sun, 13 Jan 2019 01:28:54 -0800 (PST) X-Google-Smtp-Source: ALg8bN7n0+OHtmvthsdFypyfjDZ/teOOjx8LlyqqUpLclQU68K2Sq5RO1upZGBJmspqR0GBaxPy/ X-Received: by 2002:a63:d846:: with SMTP id k6mr19547322pgj.251.1547371734303; Sun, 13 Jan 2019 01:28:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547371734; cv=none; d=google.com; s=arc-20160816; b=Sbp8bIE/XgjucOkQhW76KJHFLndbIN414AqewQ1JQbGs2NFPDBadgxl+CqKO7LF1yq rGY9dIyqX8HI/b2e0cSj1mlgwgaMbu4/v0srdqBOIZRQtNReZqQ4t/URVMXYFVA4R0iI 3L5XH5ggySfFqSObAqnJAxhnSZH8RREUTRu3s8nN1lHimk/x9+ExJI53P46EZTBTvvdm Rs9yLZ4kYOF5GE3SGm8jihuvqcja2T7h+8FquGE11wfsDgK1MYt6yJ7Lu2K1NLWl3v+Z 3y/V1ZlID6UP5p/vfaG1sledd3JVp/j4fFRk/cz8yDSz2hU5tqign3wAQiWQV8ao0QTG BFAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=7mRlDlSs4jEjSDVW8pxPQyEKrO9jfYROq7ul0P50/yU=; b=Jw4YkfoU1LUNyqnywF/ylXmstjN48lQ+qp8eGhESP8X2eKZ20h5fJd5eobXCZvluB4 5MXpfKedj2x4Acnwgd4MYEYopKDBK94zmMGuzlqqNKaiIloBWeahDHjKPEFJW7vgngrp v5t/Dd9J4OcwYGgHkUtCuhLf/tplYNsyRMiD7xJul0/yhbEsLLmBW597pJr3F/zOQXS4 ohZb4hRIOQ6V0+ZEWxSJNK2CwO/IeXTLgdfSmX1UoxMiE8Bwx0kRBYiIW8OZXbEGv6Is nTrflEjpVGnkeKOIMr9OYQ1Di82DUsdWEC3xZXJhja8sK8IGNp6dtwNsr6ykbbcaIVFJ aGvg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k6si25031021pgr.500.2019.01.13.01.28.08; Sun, 13 Jan 2019 01:28:54 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726598AbfAMJZB (ORCPT + 99 others); Sun, 13 Jan 2019 04:25:01 -0500 Received: from mail3-relais-sop.national.inria.fr ([192.134.164.104]:60664 "EHLO mail3-relais-sop.national.inria.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726551AbfAMJYw (ORCPT ); Sun, 13 Jan 2019 04:24:52 -0500 X-IronPort-AV: E=Sophos;i="5.56,473,1539640800"; d="scan'208";a="291725802" Received: from palace.lip6.fr ([132.227.105.202]) by mail3-relais-sop.national.inria.fr with ESMTP/TLS/AES128-SHA256; 13 Jan 2019 10:24:47 +0100 From: Julia Lawall To: Maxime Ripard Cc: kernel-janitors@vger.kernel.org, David Airlie , Daniel Vetter , Chen-Yu Tsai , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/4] drm/sun4i: backend: add missing of_node_puts Date: Sun, 13 Jan 2019 09:47:44 +0100 Message-Id: <1547369264-24831-5-git-send-email-Julia.Lawall@lip6.fr> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1547369264-24831-1-git-send-email-Julia.Lawall@lip6.fr> References: <1547369264-24831-1-git-send-email-Julia.Lawall@lip6.fr> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The device node iterators perform an of_node_get on each iteration, so a jump out of the loop requires an of_node_put. Remote and port also have augmented reference counts, so drop them on each iteration and at the end of the function, respectively. Remote is only used for the address it contains, not for the contents of that address, so the reference count can be dropped immediately. The semantic patch that fixes the first part of this problem is as follows (http://coccinelle.lip6.fr): // @@ expression root,e; local idexpression child; iterator name for_each_child_of_node; @@ for_each_available_child_of_node(root, child) { ... when != of_node_put(child) when != e = child + of_node_put(child); ? break; ... } ... when != child // Signed-off-by: Julia Lawall --- Not tested. drivers/gpu/drm/sun4i/sun4i_backend.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c index 9e9255e..a021bab 100644 --- a/drivers/gpu/drm/sun4i/sun4i_backend.c +++ b/drivers/gpu/drm/sun4i/sun4i_backend.c @@ -786,17 +786,18 @@ static struct sun4i_frontend *sun4i_backend_find_frontend(struct sun4i_drv *drv, remote = of_graph_get_remote_port_parent(ep); if (!remote) continue; + of_node_put(remote); /* does this node match any registered engines? */ list_for_each_entry(frontend, &drv->frontend_list, list) { if (remote == frontend->node) { - of_node_put(remote); of_node_put(port); + of_node_put(ep); return frontend; } } } - + of_node_put(port); return ERR_PTR(-EINVAL); }