From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Liviu Dudau <liviu@dudau.co.uk>
Cc: Liviu Dudau <Liviu.Dudau@arm.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
Arnd Bergmann <arnd@arndb.de>, Mohit Kumar <mohit.kumar@st.com>,
Jingoo Han <jg1.han@samsung.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Rob Herring <robh+dt@kernel.org>
Subject: Re: [RFC PATCH 1/3] drivers: of: fix resources freeing in of_pci_get_host_bridge_resources()
Date: Mon, 26 Jan 2015 11:21:11 +0000 [thread overview]
Message-ID: <20150126112111.GA547@red-moon> (raw)
In-Reply-To: <20150120112031.GA342@bart.dudau.co.uk>
On Tue, Jan 20, 2015 at 11:20:32AM +0000, Liviu Dudau wrote:
> On Tue, Jan 20, 2015 at 10:49:22AM +0000, Lorenzo Pieralisi wrote:
> > On Mon, Jan 19, 2015 at 06:32:29PM +0000, Liviu Dudau wrote:
> >
> > [...]
> >
> > > > @@ -146,6 +146,7 @@ int of_pci_get_host_bridge_resources(struct device_node *dev,
> > > > struct of_pci_range_parser parser;
> > > > char range_type[4];
> > > > int err;
> > > > + struct pci_host_bridge_window *window;
> > > >
> > > > if (io_base)
> > > > *io_base = (resource_size_t)OF_BAD_ADDR;
> > > > @@ -225,7 +226,10 @@ int of_pci_get_host_bridge_resources(struct device_node *dev,
> > > > conversion_failed:
> > > > kfree(res);
> > > > parse_failed:
> > > > + list_for_each_entry(window, resources, list)
> > > > + kfree(window->res);
> > > > pci_free_resource_list(resources);
> > > > + kfree(bus_range);
> > > > return err;
> > > > }
> > > > EXPORT_SYMBOL_GPL(of_pci_get_host_bridge_resources);
> > >
> > > Hi Lorenzo et all,
> > >
> > > Here is my personal view and I am happy to hear from others on the desired
> > > behaviour:
> > >
> > > When I wrote this function what I had in mind was that it will parse as
> > > much as possible from the device tree and return a list of resources that
> > > could be successfully converted. If the entire list of ranges could not
> > > be converted then an error code will be returned, but the caller still
> > > had the list as constructed up to the error. It was the job of the caller
> > > to free the list in either cases, as stated in the comment.
> >
> > That's what I am questioning. If the function takes an error path, the
> > windows list is freed, so the resource pointers are gone. There is no
> > way the caller can grab those resource pointers and free them.
>
> I stand corrected. Your patch is needed.
Mind acking it ? I will ask Bjorn to take it then.
Thanks,
Lorenzo
WARNING: multiple messages have this Message-ID (diff)
From: lorenzo.pieralisi@arm.com (Lorenzo Pieralisi)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 1/3] drivers: of: fix resources freeing in of_pci_get_host_bridge_resources()
Date: Mon, 26 Jan 2015 11:21:11 +0000 [thread overview]
Message-ID: <20150126112111.GA547@red-moon> (raw)
In-Reply-To: <20150120112031.GA342@bart.dudau.co.uk>
On Tue, Jan 20, 2015 at 11:20:32AM +0000, Liviu Dudau wrote:
> On Tue, Jan 20, 2015 at 10:49:22AM +0000, Lorenzo Pieralisi wrote:
> > On Mon, Jan 19, 2015 at 06:32:29PM +0000, Liviu Dudau wrote:
> >
> > [...]
> >
> > > > @@ -146,6 +146,7 @@ int of_pci_get_host_bridge_resources(struct device_node *dev,
> > > > struct of_pci_range_parser parser;
> > > > char range_type[4];
> > > > int err;
> > > > + struct pci_host_bridge_window *window;
> > > >
> > > > if (io_base)
> > > > *io_base = (resource_size_t)OF_BAD_ADDR;
> > > > @@ -225,7 +226,10 @@ int of_pci_get_host_bridge_resources(struct device_node *dev,
> > > > conversion_failed:
> > > > kfree(res);
> > > > parse_failed:
> > > > + list_for_each_entry(window, resources, list)
> > > > + kfree(window->res);
> > > > pci_free_resource_list(resources);
> > > > + kfree(bus_range);
> > > > return err;
> > > > }
> > > > EXPORT_SYMBOL_GPL(of_pci_get_host_bridge_resources);
> > >
> > > Hi Lorenzo et all,
> > >
> > > Here is my personal view and I am happy to hear from others on the desired
> > > behaviour:
> > >
> > > When I wrote this function what I had in mind was that it will parse as
> > > much as possible from the device tree and return a list of resources that
> > > could be successfully converted. If the entire list of ranges could not
> > > be converted then an error code will be returned, but the caller still
> > > had the list as constructed up to the error. It was the job of the caller
> > > to free the list in either cases, as stated in the comment.
> >
> > That's what I am questioning. If the function takes an error path, the
> > windows list is freed, so the resource pointers are gone. There is no
> > way the caller can grab those resource pointers and free them.
>
> I stand corrected. Your patch is needed.
Mind acking it ? I will ask Bjorn to take it then.
Thanks,
Lorenzo
WARNING: multiple messages have this Message-ID (diff)
From: Lorenzo Pieralisi <lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org>
To: Liviu Dudau <liviu-I3yL/QOVVjH10XsdtD+oqA@public.gmane.org>
Cc: Liviu Dudau <Liviu.Dudau-5wv7dgnIgG8@public.gmane.org>,
"linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
Mohit Kumar <mohit.kumar-qxv4g6HH51o@public.gmane.org>,
Jingoo Han <jg1.han-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
Bjorn Helgaas <bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Subject: Re: [RFC PATCH 1/3] drivers: of: fix resources freeing in of_pci_get_host_bridge_resources()
Date: Mon, 26 Jan 2015 11:21:11 +0000 [thread overview]
Message-ID: <20150126112111.GA547@red-moon> (raw)
In-Reply-To: <20150120112031.GA342-hOhETlTuV5niMG9XS5x8Mg@public.gmane.org>
On Tue, Jan 20, 2015 at 11:20:32AM +0000, Liviu Dudau wrote:
> On Tue, Jan 20, 2015 at 10:49:22AM +0000, Lorenzo Pieralisi wrote:
> > On Mon, Jan 19, 2015 at 06:32:29PM +0000, Liviu Dudau wrote:
> >
> > [...]
> >
> > > > @@ -146,6 +146,7 @@ int of_pci_get_host_bridge_resources(struct device_node *dev,
> > > > struct of_pci_range_parser parser;
> > > > char range_type[4];
> > > > int err;
> > > > + struct pci_host_bridge_window *window;
> > > >
> > > > if (io_base)
> > > > *io_base = (resource_size_t)OF_BAD_ADDR;
> > > > @@ -225,7 +226,10 @@ int of_pci_get_host_bridge_resources(struct device_node *dev,
> > > > conversion_failed:
> > > > kfree(res);
> > > > parse_failed:
> > > > + list_for_each_entry(window, resources, list)
> > > > + kfree(window->res);
> > > > pci_free_resource_list(resources);
> > > > + kfree(bus_range);
> > > > return err;
> > > > }
> > > > EXPORT_SYMBOL_GPL(of_pci_get_host_bridge_resources);
> > >
> > > Hi Lorenzo et all,
> > >
> > > Here is my personal view and I am happy to hear from others on the desired
> > > behaviour:
> > >
> > > When I wrote this function what I had in mind was that it will parse as
> > > much as possible from the device tree and return a list of resources that
> > > could be successfully converted. If the entire list of ranges could not
> > > be converted then an error code will be returned, but the caller still
> > > had the list as constructed up to the error. It was the job of the caller
> > > to free the list in either cases, as stated in the comment.
> >
> > That's what I am questioning. If the function takes an error path, the
> > windows list is freed, so the resource pointers are gone. There is no
> > way the caller can grab those resource pointers and free them.
>
> I stand corrected. Your patch is needed.
Mind acking it ? I will ask Bjorn to take it then.
Thanks,
Lorenzo
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-01-26 11:21 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-07 15:29 [RFC PATCH 0/3] drivers: port PCIe designware to new DT parsing API Lorenzo Pieralisi
2015-01-07 15:29 ` Lorenzo Pieralisi
2015-01-07 15:29 ` [RFC PATCH 1/3] drivers: of: fix resources freeing in of_pci_get_host_bridge_resources() Lorenzo Pieralisi
2015-01-07 15:29 ` Lorenzo Pieralisi
2015-01-19 18:32 ` Liviu Dudau
2015-01-19 18:32 ` Liviu Dudau
2015-01-20 10:49 ` Lorenzo Pieralisi
2015-01-20 10:49 ` Lorenzo Pieralisi
2015-01-20 10:49 ` Lorenzo Pieralisi
2015-01-20 11:20 ` Liviu Dudau
2015-01-20 11:20 ` Liviu Dudau
2015-01-20 11:20 ` Liviu Dudau
2015-01-26 11:21 ` Lorenzo Pieralisi [this message]
2015-01-26 11:21 ` Lorenzo Pieralisi
2015-01-26 11:21 ` Lorenzo Pieralisi
2015-01-26 13:06 ` Liviu Dudau
2015-01-26 13:06 ` Liviu Dudau
2015-01-26 13:06 ` Liviu Dudau
2015-01-07 15:29 ` [RFC PATCH 2/3] drivers: of: of_pci_get_host_bridge_resources() range parsing update Lorenzo Pieralisi
2015-01-07 15:29 ` Lorenzo Pieralisi
2015-01-07 15:29 ` [RFC PATCH 3/3] drivers: pci: host: update the pcie designware driver to new range parsing API Lorenzo Pieralisi
2015-01-07 15:29 ` Lorenzo Pieralisi
2015-01-07 15:29 ` Lorenzo Pieralisi
2015-01-19 16:40 ` [RFC PATCH 0/3] drivers: port PCIe designware to new DT " Rob Herring
2015-01-19 16:40 ` Rob Herring
2015-01-19 16:40 ` Rob Herring
2015-01-19 16:59 ` Arnd Bergmann
2015-01-19 16:59 ` Arnd Bergmann
2015-01-19 16:59 ` Arnd Bergmann
2015-01-20 10:39 ` Lorenzo Pieralisi
2015-01-20 10:39 ` Lorenzo Pieralisi
2015-01-20 10:39 ` Lorenzo Pieralisi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150126112111.GA547@red-moon \
--to=lorenzo.pieralisi@arm.com \
--cc=Liviu.Dudau@arm.com \
--cc=arnd@arndb.de \
--cc=bhelgaas@google.com \
--cc=devicetree@vger.kernel.org \
--cc=jg1.han@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=liviu@dudau.co.uk \
--cc=mohit.kumar@st.com \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.