Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3699796imm; Mon, 18 Jun 2018 02:33:04 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIrivhyKD5cC0j8k6zptDVhumiyHCsuIvDR5yvrNPO4Wqs7FSHwTQt+zRyKM3Kcl4hwFi2f X-Received: by 2002:a62:6f86:: with SMTP id k128-v6mr12726491pfc.150.1529314384626; Mon, 18 Jun 2018 02:33:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529314384; cv=none; d=google.com; s=arc-20160816; b=xtPJhh/4x4Lj4sC4ZQb1EyENYk6U5x/MSThi9it0dyn57jOi9gws/jDfv2nRzZTedF 9Jtw0ZA4xGpteqOVSz7d9af0zb+sig8ya7Q0VbXM/UqmGbHXzAlCK/GDTj18s3GVKOHC X8AXJTg0hVaqJlMWev+ULpX3OJDqxqtSz+sMgT1llUOPSa6FhFxVzQKRZAXzUjqL/2Pg H35zZcCFA/H5cpVgjl+639xyoDcCABLdP2bgDHOSJlJkQd3nU8Y+GY+av/O3Lm4Kh6Z+ DkWC7kfFPgeoTBRiQHWHVOrNSWBKzXPXSWCJN9X27hfRrLnL2LxAz3l+l4AAXv8bN1pq 1+/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=DQ58tmkR9xXAUpT9qe3nyD3dMclktpbyaiaMURiIOJI=; b=dbwJ58Mcs9JURe+5gealHcJfD71QCD939To0Rrhrnyg7nABmOkO8W57fzv7hMVSvsb f+UNM+k605BbFIPv3AmJKtmvQ3jirLV0c9BeUH0c6mDVocWsNxjEJU8iERPRW3iNQhbK jNcM6OVJapn7QL2u/gkOjN7qdc09jld90Ea6IMIsXqOSF0Cn5s2INnuChv11m76rsucH WeCl4DfMhkPCw53zBfax8FbFAYgauk1xQsDIUIzdMXDysrZtQ3pyIyPs4+27tX6LgRus Sd7ex/3t03rNdbSYJ3xsVKwbpubXAnBl48rcpvJxRw6wMI/frp/njOSz0+EzoFYIpUyk /vAQ== 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 w11-v6si14200401plz.333.2018.06.18.02.32.51; Mon, 18 Jun 2018 02:33:04 -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 S965836AbeFRJb0 (ORCPT + 99 others); Mon, 18 Jun 2018 05:31:26 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:56160 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936363AbeFRIZD (ORCPT ); Mon, 18 Jun 2018 04:25:03 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 6FA7CC5C; Mon, 18 Jun 2018 08:25:02 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mike Marciniszyn , "Michael J. Ruhl" , Sebastian Sanchez , Dennis Dalessandro , Doug Ledford , Sasha Levin Subject: [PATCH 4.16 175/279] IB/hfi1: Fix memory leak in exception path in get_irq_affinity() Date: Mon, 18 Jun 2018 10:12:40 +0200 Message-Id: <20180618080616.155373602@linuxfoundation.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180618080608.851973560@linuxfoundation.org> References: <20180618080608.851973560@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.16-stable review patch. If anyone has any objections, please let me know. ------------------ From: Sebastian Sanchez [ Upstream commit 59482a14918b282ca2a98f38c69da5ebeb1107d2 ] When IRQ affinity is set and the interrupt type is unknown, a cpu mask allocated within the function is never freed. Fix this memory leak by allocating memory within the scope where it is used. Reviewed-by: Mike Marciniszyn Reviewed-by: Michael J. Ruhl Signed-off-by: Sebastian Sanchez Signed-off-by: Dennis Dalessandro Signed-off-by: Doug Ledford Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/infiniband/hw/hfi1/affinity.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) --- a/drivers/infiniband/hw/hfi1/affinity.c +++ b/drivers/infiniband/hw/hfi1/affinity.c @@ -412,7 +412,6 @@ static void hfi1_cleanup_sdma_notifier(s static int get_irq_affinity(struct hfi1_devdata *dd, struct hfi1_msix_entry *msix) { - int ret; cpumask_var_t diff; struct hfi1_affinity_node *entry; struct cpu_mask_set *set = NULL; @@ -424,10 +423,6 @@ static int get_irq_affinity(struct hfi1_ extra[0] = '\0'; cpumask_clear(&msix->mask); - ret = zalloc_cpumask_var(&diff, GFP_KERNEL); - if (!ret) - return -ENOMEM; - entry = node_affinity_lookup(dd->node); switch (msix->type) { @@ -458,6 +453,9 @@ static int get_irq_affinity(struct hfi1_ * finds its CPU here. */ if (cpu == -1 && set) { + if (!zalloc_cpumask_var(&diff, GFP_KERNEL)) + return -ENOMEM; + if (cpumask_equal(&set->mask, &set->used)) { /* * We've used up all the CPUs, bump up the generation @@ -469,6 +467,8 @@ static int get_irq_affinity(struct hfi1_ cpumask_andnot(diff, &set->mask, &set->used); cpu = cpumask_first(diff); cpumask_set_cpu(cpu, &set->used); + + free_cpumask_var(diff); } cpumask_set_cpu(cpu, &msix->mask); @@ -482,7 +482,6 @@ static int get_irq_affinity(struct hfi1_ hfi1_setup_sdma_notifier(msix); } - free_cpumask_var(diff); return 0; }