Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp306913yba; Wed, 3 Apr 2019 09:06:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqzTw3eNIa7+KCT8/+UBoSZY/s64YztDkjeLJn2EymhqnEJ8URkzv9o2vP6+YIRhde5gUEP8 X-Received: by 2002:aa7:864a:: with SMTP id a10mr153613pfo.181.1554307567575; Wed, 03 Apr 2019 09:06:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554307567; cv=none; d=google.com; s=arc-20160816; b=Wd1cbAkAz4Qn6/ZEWvzB4Kuwciqt9nOfLt1xc10oHHiidPQtYdItpjC4aH5waRSfKy oP2QY2b6rVJsp4qkKU3vRnwCaoJqVL5b/fgL9WWTfCFoS6nMFHfc+m3KIZpU9lnxenra Kfz0hQfZPJ2PSHxjkzrDfP4/mzWJa7OEsO1JcAEFwsHP98o0OsbwyOCY1dVuRRjFDoMC 2pqIzIWE04s9C8RfEkN14Xpxugk2N0b4wQxo5FmwIrpqOoZJqOxPET1WrIrdmmckr6S0 PnPtOtDsIzWp1aNQGZY310FvM4dmpPZGbsCmoHO91Ej7+lUwLk2OTRbq76eAMxKO6LrV jj5g== 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=nSK8xyEgOm1z8arJG9UYvE9wWHwZQZGiOAEyCBbzDIQ=; b=NWdsIoASf2NBy859T7WxvabI7sSP7keeCgqkL1F2OVgeu9QBGu8QW8SFmGZIS9nwx9 j8js1XYl/ufU93RLi2lu1MmwSOj1gneolIkrZMrtQI+4qeuQXFPlN3oqibOYUORAgLTS Tk3OfRBfq+S9IiT1ioJs/eLmp/GpJfkq0H5JajaMU5IwJP9AckAOIJodZ9LMb90ndPOO QuHIC1QrhKCsAHDg5jmSMC0sL2LLQ0o5HXIWQmZQpkiKv0+tDAUQpl52Hv5MNxPsvZLC IIZWYWTqDaRtgUJ0V57pl1o0TWeRi3TR3xHHJz1oY7SEMSeftjnCOX7kpQgMaJk27q5A VGUQ== 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 w10si13774441pgp.31.2019.04.03.09.05.51; Wed, 03 Apr 2019 09:06:07 -0700 (PDT) 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 S1727056AbfDCQDq (ORCPT + 99 others); Wed, 3 Apr 2019 12:03:46 -0400 Received: from mxhk.zte.com.cn ([63.217.80.70]:8154 "EHLO mxhk.zte.com.cn" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726993AbfDCQDm (ORCPT ); Wed, 3 Apr 2019 12:03:42 -0400 Received: from mse01.zte.com.cn (unknown [10.30.3.20]) by Forcepoint Email with ESMTPS id A8767A272F3D2EB5F913; Thu, 4 Apr 2019 00:03:41 +0800 (CST) Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse01.zte.com.cn with ESMTP id x33G3XYq028657; Thu, 4 Apr 2019 00:03:33 +0800 (GMT-8) (envelope-from wen.yang99@zte.com.cn) Received: from fox-host8.localdomain ([10.74.120.8]) by szsmtp06.zte.com.cn (Lotus Domino Release 8.5.3FP6) with ESMTP id 2019040400035945-7533732 ; Thu, 4 Apr 2019 00:03:59 +0800 From: Wen Yang To: linux-kernel@vger.kernel.org Cc: wang.yi59@zte.com.cn, Wen Yang , Rob Clark , Sean Paul , David Airlie , Daniel Vetter , Jordan Crouse , Mamta Shukla , Thomas Zimmermann , Sharat Masetty , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org Subject: [PATCH 3/7] drm/msm: a5xx: fix possible object reference leak Date: Thu, 4 Apr 2019 00:04:11 +0800 Message-Id: <1554307455-40361-4-git-send-email-wen.yang99@zte.com.cn> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1554307455-40361-1-git-send-email-wen.yang99@zte.com.cn> References: <1554307455-40361-1-git-send-email-wen.yang99@zte.com.cn> X-MIMETrack: Itemize by SMTP Server on SZSMTP06/server/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2019-04-04 00:03:59, Serialize by Router on notes_smtp/zte_ltd(Release 9.0.1FP7|August 17, 2016) at 2019-04-04 00:03:25, Serialize complete at 2019-04-04 00:03:25 X-MAIL: mse01.zte.com.cn x33G3XYq028657 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The call to of_get_child_by_name returns a node pointer with refcount incremented thus it must be explicitly decremented after the last usage. Detected by coccinelle with the following warnings: drivers/gpu/drm/msm/adreno/a5xx_gpu.c:57:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 47, but without a corresponding object release within this function. drivers/gpu/drm/msm/adreno/a5xx_gpu.c:66:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 47, but without a corresponding object release within this function. drivers/gpu/drm/msm/adreno/a5xx_gpu.c:118:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 47, but without a corresponding object release within this function. drivers/gpu/drm/msm/adreno/a5xx_gpu.c:57:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 51, but without a corresponding object release within this function. drivers/gpu/drm/msm/adreno/a5xx_gpu.c:66:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 51, but without a corresponding object release within this function. drivers/gpu/drm/msm/adreno/a5xx_gpu.c:118:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 51, but without a corresponding object release within this function. Signed-off-by: Wen Yang Cc: Rob Clark Cc: Sean Paul Cc: David Airlie Cc: Daniel Vetter Cc: Jordan Crouse Cc: Mamta Shukla Cc: Thomas Zimmermann Cc: Sharat Masetty Cc: linux-arm-msm@vger.kernel.org Cc: dri-devel@lists.freedesktop.org Cc: freedreno@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org (open list) --- drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c index d5f5e56..270da14 100644 --- a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c @@ -34,7 +34,7 @@ static int zap_shader_load_mdt(struct msm_gpu *gpu, const char *fwname) { struct device *dev = &gpu->pdev->dev; const struct firmware *fw; - struct device_node *np; + struct device_node *np, *mem_np; struct resource r; phys_addr_t mem_phys; ssize_t mem_size; @@ -48,11 +48,13 @@ static int zap_shader_load_mdt(struct msm_gpu *gpu, const char *fwname) if (!np) return -ENODEV; - np = of_parse_phandle(np, "memory-region", 0); - if (!np) + mem_np = of_parse_phandle(np, "memory-region", 0); + of_node_put(np); + if (!mem_np) return -EINVAL; - ret = of_address_to_resource(np, 0, &r); + ret = of_address_to_resource(mem_np, 0, &r); + of_node_put(mem_np); if (ret) return ret; -- 2.9.5