Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp1127232img; Fri, 22 Mar 2019 16:36:38 -0700 (PDT) X-Google-Smtp-Source: APXvYqwGeWt+qTtNuc71IYs3j6M74DDg2r94vth4uJsPvpZKBClMZcCTTQ4ht7OJiyGzvmRHWDcC X-Received: by 2002:a63:5460:: with SMTP id e32mr11585604pgm.401.1553297798553; Fri, 22 Mar 2019 16:36:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553297798; cv=none; d=google.com; s=arc-20160816; b=hgdczrpR8oIuN32tRMgvrGNXa8LLgZd8pWzRoO02CEcxTM2O3NBnXfF2BKasK8Bx7U PLxmgvmyE4iWS4o0TWDGOR2fksOc08W0o2NVlkvfz+VL8UppP8R8w6+jsUAsLURBTcia nIY3R1b7NBdLa1CO7G0wJkYIktVDqXXwHpduS/9pMgcqNZxHglWUc6H6CFf5QyUPF20j TYNpGQoX0r8cDcSRW5nbKzFXf1gjeSAuFLQZSsSCrtaOupz63sEmbdFasOnvLS2wFxoE ZWKxV9E/HLOnyAZvMgJcP/hx4Mxz2NBG3+OmBT/iahdKnqYldjxvf7NX4uscRodeWvxZ pw1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=buiCWEBpb+xPatRdudx9b9YE6e58oZpw6VxmiOAjeSY=; b=wUluiZPsF/+m6hW51q63HzY5jAE2k6bysXRiM4758/lwN8uildV4cAEMG8o47mxlZJ DdGRadKyetb3rC0oE9RMh+JeDxpYY+DCBfu2QjfiecXEOunyg0xOo/rdIDeq8s5VEhg/ WcGkbguUKIant9mkejYDWZyHUzDexEMBhTkIUW8xc6yCTcXGCy9WTvFWNFS7EflvTxSH rPRq+cx9qNDmy4pHpP0C6kaG2MbutXXmOHODf0lrzvIhrlBifwWqZpLGL0SvLHsIdLpF kBEajfXeBVaHVGDrIeJj654A26oI0FWrO6LjcaaMJgIZXv0k+onk2kuxQbbYuQRxI3Rm YhGw== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k1si7659589pgo.417.2019.03.22.16.36.23; Fri, 22 Mar 2019 16:36:38 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727685AbfCVXfQ (ORCPT + 99 others); Fri, 22 Mar 2019 19:35:16 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:48386 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726589AbfCVXfP (ORCPT ); Fri, 22 Mar 2019 19:35:15 -0400 Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x2MNT8x2073634 for ; Fri, 22 Mar 2019 19:35:14 -0400 Received: from e11.ny.us.ibm.com (e11.ny.us.ibm.com [129.33.205.201]) by mx0b-001b2d01.pphosted.com with ESMTP id 2rd69wpf2d-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 22 Mar 2019 19:35:14 -0400 Received: from localhost by e11.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 22 Mar 2019 23:35:14 -0000 Received: from b01cxnp22035.gho.pok.ibm.com (9.57.198.25) by e11.ny.us.ibm.com (146.89.104.198) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 22 Mar 2019 23:35:12 -0000 Received: from b01ledav004.gho.pok.ibm.com (b01ledav004.gho.pok.ibm.com [9.57.199.109]) by b01cxnp22035.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x2MNZA2i17432684 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 22 Mar 2019 23:35:10 GMT Received: from b01ledav004.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E0BB9112062; Fri, 22 Mar 2019 23:35:09 +0000 (GMT) Received: from b01ledav004.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 750F3112061; Fri, 22 Mar 2019 23:35:09 +0000 (GMT) Received: from linux-xej6.aus.stglabs.ibm.com (unknown [9.40.195.184]) by b01ledav004.gho.pok.ibm.com (Postfix) with ESMTP; Fri, 22 Mar 2019 23:35:09 +0000 (GMT) From: Tyrel Datwyler To: bhelgaas@google.com Cc: linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Tyrel Datwyler Subject: [PATCH 1/2] pci: rpadlpar: fix leaked device_node references in add/remove paths Date: Fri, 22 Mar 2019 13:27:21 -0500 X-Mailer: git-send-email 2.12.3 X-TM-AS-GCONF: 00 x-cbid: 19032223-2213-0000-0000-00000368DB32 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00010797; HX=3.00000242; KW=3.00000007; PH=3.00000004; SC=3.00000282; SDB=6.01178238; UDB=6.00616426; IPR=6.00958937; MB=3.00026118; MTD=3.00000008; XFM=3.00000015; UTC=2019-03-22 23:35:13 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19032223-2214-0000-0000-00005DC39711 Message-Id: <20190322182722.8255-1-tyreld@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-03-22_13:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1903220167 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The find_dlpar_node() helper returns a device node with its reference incremented. Both the add and remove paths use this helper for find the appropriate node, but fail to release the reference when done. Annotate the find_dlpar_node() helper with a comment about the incremented reference count, and call of_node_put() on the obtained device_node in the add and remove paths. Also, fixup a reference leak in the find_vio_slot() helper where we fail to call of_node_put() on the vdevice node after we iterate over its children. Signed-off-by: Tyrel Datwyler --- drivers/pci/hotplug/rpadlpar_core.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/pci/hotplug/rpadlpar_core.c b/drivers/pci/hotplug/rpadlpar_core.c index e2356a9c7088..182f9e3443ee 100644 --- a/drivers/pci/hotplug/rpadlpar_core.c +++ b/drivers/pci/hotplug/rpadlpar_core.c @@ -51,6 +51,7 @@ static struct device_node *find_vio_slot_node(char *drc_name) if (rc == 0) break; } + of_node_put(parent); return dn; } @@ -71,6 +72,7 @@ static struct device_node *find_php_slot_pci_node(char *drc_name, return np; } +/* Returns a device_node with its reference count incremented */ static struct device_node *find_dlpar_node(char *drc_name, int *node_type) { struct device_node *dn; @@ -306,6 +308,7 @@ int dlpar_add_slot(char *drc_name) rc = dlpar_add_phb(drc_name, dn); break; } + of_node_put(dn); printk(KERN_INFO "%s: slot %s added\n", DLPAR_MODULE_NAME, drc_name); exit: @@ -439,6 +442,7 @@ int dlpar_remove_slot(char *drc_name) rc = dlpar_remove_pci_slot(drc_name, dn); break; } + of_node_put(dn); vm_unmap_aliases(); printk(KERN_INFO "%s: slot %s removed\n", DLPAR_MODULE_NAME, drc_name); -- 2.12.3