Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp1127637imm; Tue, 5 Jun 2018 09:28:59 -0700 (PDT) X-Google-Smtp-Source: ADUXVKI4d3n/bDGpm1ducLru7YU+xZWM8kKuWLwPbrVTC+rKXNw9yajx9sjX3V0uYjob+ORHW4+r X-Received: by 2002:a17:902:a5c7:: with SMTP id t7-v6mr27397112plq.360.1528216139837; Tue, 05 Jun 2018 09:28:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528216139; cv=none; d=google.com; s=arc-20160816; b=VMExVleh8NuUYAUZGAG1zokuKt7ZnT1IoM3bsQohUYpj+dvP77v2FpiE4G/ZtByIR2 yb9gRKJY8s3rU0WKcdwCIC4iJ8Ts0OE9dyqRhYDbay/MSGMJEPa0Fsx/Ggef8TCvDEEH CVZQOGifO9xJ/wwM+Toa1h4xhNKvedZiJRgM7gOAKnchxGOxTRS7SnCH5oONQ4b2lb2I GFOjGmnejVMM45m2k1rT0MubCyqxwHdPJHbKHMjfOH2ey5DOq8uF6MMx5axiYTs8i8Fz IwjZJhvgW5GTxXkkUGEk7dfiGxo9PdO5cU9S7hOKlUswia2gmw0e/9/+s+1Tzg2bybJc hOvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=pNfmXT9vd472IhS8EM5E5lax4fbhS/or7/fck0BDBg8=; b=hTcSL4XGOmwNsr/hdmV7MFAoyATItU9aWBqJncIzIkCTg8jwm5FANGc2FaKxzBlKw8 y+dk+Py8ZBl4RjGpu+2pevwkxjco1t/oSsLlCqDSAAlgsV9t1hHFaYLg5zTIyEM4Nvr+ XmfyFQPgrc1eu8S+bUKX3Ibp1vjHavCNajPKNkexG9VsIbNZzLmps9XE6yYdZQb+WbsO Z9KxB+Ap0jiiina8u59WpfP5l+ZNPKfIWai9YKb3UlDjUV2TeC0r/QZOYGeq6OaFoJDc cn3n3diRAhuQ/nDIyg95nZzQKrBly7mu/iHiwjg5r3xpfATNCRtesceYkyw+CMZhN14H 65aA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=vKokXebq; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i11-v6si21195954pgc.350.2018.06.05.09.28.45; Tue, 05 Jun 2018 09:28:59 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=vKokXebq; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752005AbeFEQ1A (ORCPT + 99 others); Tue, 5 Jun 2018 12:27:00 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:33264 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751748AbeFEQ06 (ORCPT ); Tue, 5 Jun 2018 12:26:58 -0400 Received: by mail-qk0-f196.google.com with SMTP id h7-v6so1916236qkm.0; Tue, 05 Jun 2018 09:26:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=pNfmXT9vd472IhS8EM5E5lax4fbhS/or7/fck0BDBg8=; b=vKokXebqJ/4oyC/TlR6yvjhQGF9Dibj1ttAJQoZH/ZlKRzNeqZF/p8bW6wKUl+0Kag viJM9sITstKGcTX8D9WWcovjMPP/giGyjbRuV6E0c4bj7Intwu95+wOxj28D35r0uxKr QmP0jIWFIQtchJTuvfQ8mIzLW9hOS47YVxdkJFibXm6A5XHccV6kams5eczw+D77kmII p7jng0IXFmGS3sOKbL4SXmWIM8XSZpuc+c2G4jw1fW5BJ29Qpka70J7k1244bsmBLu6H dKyrmHTo9DLze1NIbUX/qctkn2P18fCl82jWPSBM8wov5ClTYzBAmXS6cP8NW18QWjXV YLsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=pNfmXT9vd472IhS8EM5E5lax4fbhS/or7/fck0BDBg8=; b=fkdHc/OSAkZ6JB26daqkslXD0bhBVJH9B7zRT7NA5ZqHYguan0bQTm6fl9p6jUgPvt VXcyKGz7zRe7Da0VTE9E80dGylw0eMLVCKkpNChNO8tYPmYd6rHEN9+VpgmK5xOcjKfy fu11W60yKgyHJpqV+354s0n0E4XYlwEGJWFPLRBhpEQHrvShdtQ++HaolZIe3swh9XrA HaoOLWtCA0pTsWu41JziuaDCLbOn+eT73UTeH+H9j119b8MOfwJuoHtyj1rZAx1cm14o x2Ff7hS6xja7WfO3rZg+16IchP4tNiNGq2nNFQAnhkrk+6WfIy6s4wnAS2eyC1OwRBeI BZYQ== X-Gm-Message-State: APt69E37Fa+POTlqcbg6sdmdIjCekcR2q8k1dpncm3D9RHp/jZLOtijP QCcUptuWhGQ/FdUClIzVG4Q7HJKAQmPjZAHt/QfZZy+3 X-Received: by 2002:a37:1399:: with SMTP id 25-v6mr22371838qkt.83.1528216018192; Tue, 05 Jun 2018 09:26:58 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a0c:98f9:0:0:0:0:0 with HTTP; Tue, 5 Jun 2018 09:26:57 -0700 (PDT) In-Reply-To: References: <3aeb2ed038cbce8fe744b614dc19d414555a7e8f.1526375226.git.jan.kiszka@siemens.com> From: Andy Shevchenko Date: Tue, 5 Jun 2018 19:26:57 +0300 Message-ID: Subject: Re: [PATCH] PCI: Clean up resource allocation in devm_of_pci_get_host_bridge_resources() To: Jan Kiszka Cc: Bjorn Helgaas , Linux Kernel Mailing List , linux-pci@vger.kernel.org, linux-arm Mailing List , Vladimir Zapolskiy , Jingoo Han , Joao Pinto , Lorenzo Pieralisi 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 On Wed, May 16, 2018 at 3:31 PM, Jan Kiszka wrote: > Instead of first allocating and then freeing memory for struct resource > in case we cannot parse a PCI resource from the device tree, work > against a local struct and kmemdup it when we decide to go with it. > Bjorn, any comments on this? > Suggested-by: Andy Shevchenko > Signed-off-by: Jan Kiszka > --- > drivers/pci/of.c | 14 ++++++-------- > 1 file changed, 6 insertions(+), 8 deletions(-) > > diff --git a/drivers/pci/of.c b/drivers/pci/of.c > index b06585a1da75..fc0f906c5c25 100644 > --- a/drivers/pci/of.c > +++ b/drivers/pci/of.c > @@ -266,7 +266,7 @@ int devm_of_pci_get_host_bridge_resources(struct device *dev, > struct list_head *resources, resource_size_t *io_base) > { > struct device_node *dev_node = dev->of_node; > - struct resource *res; > + struct resource *res, tmp_res; > struct resource *bus_range; > struct of_pci_range range; > struct of_pci_range_parser parser; > @@ -320,18 +320,16 @@ int devm_of_pci_get_host_bridge_resources(struct device *dev, > if (range.cpu_addr == OF_BAD_ADDR || range.size == 0) > continue; > > - res = devm_kzalloc(dev, sizeof(struct resource), GFP_KERNEL); > + err = of_pci_range_to_resource(&range, dev_node, &tmp_res); > + if (err) > + continue; > + > + res = devm_kmemdup(dev, &tmp_res, sizeof(tmp_res), GFP_KERNEL); > if (!res) { > err = -ENOMEM; > goto failed; > } > > - err = of_pci_range_to_resource(&range, dev_node, res); > - if (err) { > - devm_kfree(dev, res); > - continue; > - } > - > if (resource_type(res) == IORESOURCE_IO) { > if (!io_base) { > dev_err(dev, > -- > 2.13.6 -- With Best Regards, Andy Shevchenko