From: Josh Cartwright <joshc@codeaurora.org> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: linux-arm-msm@vger.kernel.org, Gilad Avidov <gavidov@codeaurora.org>, linux-kernel@vger.kernel.org, Rob Herring <rob.herring@calxeda.com>, Michael Bohan <mbohan@codeaurora.org>, Grant Likely <grant.likely@linaro.org>, Sagar Dharia <sdharia@codeaurora.org>, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH RFC 1/3] spmi: Linux driver framework for SPMI Date: Fri, 16 Aug 2013 15:21:10 -0500 [thread overview] Message-ID: <20130816202110.GJ4035@joshc.qualcomm.com> (raw) In-Reply-To: <20130816184921.GB31510@kroah.com> On Fri, Aug 16, 2013 at 11:49:21AM -0700, Greg Kroah-Hartman wrote: > On Fri, Aug 09, 2013 at 01:37:09PM -0700, Josh Cartwright wrote: > > +++ b/drivers/spmi/spmi.c > > @@ -0,0 +1,449 @@ [..] > > +static void spmi_ctrl_release(struct device *dev) > > +{ > > + struct spmi_controller *ctrl = to_spmi_controller(dev); > > + complete(&ctrl->dev_released); > > When is this memory going to be freed? > > Ah, you think it will be when you remove the device later on: > > > +int spmi_del_controller(struct spmi_controller *ctrl) > > +{ > > + struct spmi_controller *found; > > + > > + if (!ctrl) > > + return -EINVAL; > > + > > + /* Check that the ctrl has been added */ > > + mutex_lock(&board_lock); > > + found = idr_find(&ctrl_idr, ctrl->nr); > > + mutex_unlock(&board_lock); > > + > > + if (found != ctrl) > > + return -EINVAL; > > + > > + spmi_dfs_del_controller(ctrl); > > + > > + /* Remove all the clients associated with this controller */ > > + mutex_lock(&board_lock); > > + bus_for_each_dev(&spmi_bus_type, NULL, ctrl, spmi_ctrl_remove_device); > > + idr_remove(&ctrl_idr, ctrl->nr); > > + mutex_unlock(&board_lock); > > + > > + init_completion(&ctrl->dev_released); > > + device_unregister(&ctrl->dev); > > + wait_for_completion(&ctrl->dev_released); > > But you just leaked memory, right? > > You should never have to wait for this to happen, why did you need to > add this? Why not just a simple call to kfree() in the release > function? Unfortunately, the reason why this was necessary may be lost to history. :( I'll do some testing with the completion removed and a simple kfree() in the release and see if there is any fallout. Thanks, Josh -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
WARNING: multiple messages have this Message-ID
From: Josh Cartwright <joshc@codeaurora.org> To: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Grant Likely <grant.likely@linaro.org>, Rob Herring <rob.herring@calxeda.com>, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, Sagar Dharia <sdharia@codeaurora.org>, Gilad Avidov <gavidov@codeaurora.org>, Michael Bohan <mbohan@codeaurora.org> Subject: Re: [PATCH RFC 1/3] spmi: Linux driver framework for SPMI Date: Fri, 16 Aug 2013 15:21:10 -0500 [thread overview] Message-ID: <20130816202110.GJ4035@joshc.qualcomm.com> (raw) In-Reply-To: <20130816184921.GB31510@kroah.com> On Fri, Aug 16, 2013 at 11:49:21AM -0700, Greg Kroah-Hartman wrote: > On Fri, Aug 09, 2013 at 01:37:09PM -0700, Josh Cartwright wrote: > > +++ b/drivers/spmi/spmi.c > > @@ -0,0 +1,449 @@ [..] > > +static void spmi_ctrl_release(struct device *dev) > > +{ > > + struct spmi_controller *ctrl = to_spmi_controller(dev); > > + complete(&ctrl->dev_released); > > When is this memory going to be freed? > > Ah, you think it will be when you remove the device later on: > > > +int spmi_del_controller(struct spmi_controller *ctrl) > > +{ > > + struct spmi_controller *found; > > + > > + if (!ctrl) > > + return -EINVAL; > > + > > + /* Check that the ctrl has been added */ > > + mutex_lock(&board_lock); > > + found = idr_find(&ctrl_idr, ctrl->nr); > > + mutex_unlock(&board_lock); > > + > > + if (found != ctrl) > > + return -EINVAL; > > + > > + spmi_dfs_del_controller(ctrl); > > + > > + /* Remove all the clients associated with this controller */ > > + mutex_lock(&board_lock); > > + bus_for_each_dev(&spmi_bus_type, NULL, ctrl, spmi_ctrl_remove_device); > > + idr_remove(&ctrl_idr, ctrl->nr); > > + mutex_unlock(&board_lock); > > + > > + init_completion(&ctrl->dev_released); > > + device_unregister(&ctrl->dev); > > + wait_for_completion(&ctrl->dev_released); > > But you just leaked memory, right? > > You should never have to wait for this to happen, why did you need to > add this? Why not just a simple call to kfree() in the release > function? Unfortunately, the reason why this was necessary may be lost to history. :( I'll do some testing with the completion removed and a simple kfree() in the release and see if there is any fallout. Thanks, Josh -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
WARNING: multiple messages have this Message-ID
From: joshc@codeaurora.org (Josh Cartwright) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH RFC 1/3] spmi: Linux driver framework for SPMI Date: Fri, 16 Aug 2013 15:21:10 -0500 [thread overview] Message-ID: <20130816202110.GJ4035@joshc.qualcomm.com> (raw) In-Reply-To: <20130816184921.GB31510@kroah.com> On Fri, Aug 16, 2013 at 11:49:21AM -0700, Greg Kroah-Hartman wrote: > On Fri, Aug 09, 2013 at 01:37:09PM -0700, Josh Cartwright wrote: > > +++ b/drivers/spmi/spmi.c > > @@ -0,0 +1,449 @@ [..] > > +static void spmi_ctrl_release(struct device *dev) > > +{ > > + struct spmi_controller *ctrl = to_spmi_controller(dev); > > + complete(&ctrl->dev_released); > > When is this memory going to be freed? > > Ah, you think it will be when you remove the device later on: > > > +int spmi_del_controller(struct spmi_controller *ctrl) > > +{ > > + struct spmi_controller *found; > > + > > + if (!ctrl) > > + return -EINVAL; > > + > > + /* Check that the ctrl has been added */ > > + mutex_lock(&board_lock); > > + found = idr_find(&ctrl_idr, ctrl->nr); > > + mutex_unlock(&board_lock); > > + > > + if (found != ctrl) > > + return -EINVAL; > > + > > + spmi_dfs_del_controller(ctrl); > > + > > + /* Remove all the clients associated with this controller */ > > + mutex_lock(&board_lock); > > + bus_for_each_dev(&spmi_bus_type, NULL, ctrl, spmi_ctrl_remove_device); > > + idr_remove(&ctrl_idr, ctrl->nr); > > + mutex_unlock(&board_lock); > > + > > + init_completion(&ctrl->dev_released); > > + device_unregister(&ctrl->dev); > > + wait_for_completion(&ctrl->dev_released); > > But you just leaked memory, right? > > You should never have to wait for this to happen, why did you need to > add this? Why not just a simple call to kfree() in the release > function? Unfortunately, the reason why this was necessary may be lost to history. :( I'll do some testing with the completion removed and a simple kfree() in the release and see if there is any fallout. Thanks, Josh -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
next prev parent reply other threads:[~2013-08-16 20:21 UTC|newest] Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-08-15 19:50 [PATCH RFC 0/3] Add support for the System Power Management Interface (SPMI) Josh Cartwright 2013-08-15 19:50 ` Josh Cartwright 2013-08-09 20:37 ` [PATCH RFC 2/3] spmi: Add MSM PMIC Arbiter SPMI controller Josh Cartwright 2013-08-09 20:37 ` Josh Cartwright 2013-08-16 18:52 ` Greg Kroah-Hartman 2013-08-16 18:52 ` Greg Kroah-Hartman 2013-08-09 20:37 ` [PATCH RFC 1/3] spmi: Linux driver framework for SPMI Josh Cartwright 2013-08-09 20:37 ` Josh Cartwright 2013-08-16 18:46 ` Greg Kroah-Hartman 2013-08-16 18:46 ` Greg Kroah-Hartman 2013-08-16 19:47 ` Josh Cartwright 2013-08-16 19:47 ` Josh Cartwright 2013-08-16 19:47 ` Josh Cartwright 2013-08-16 19:50 ` Josh Cartwright 2013-08-16 19:50 ` Josh Cartwright 2013-08-16 19:50 ` Josh Cartwright 2013-08-16 19:58 ` Greg Kroah-Hartman 2013-08-16 19:58 ` Greg Kroah-Hartman 2013-08-16 19:58 ` Greg Kroah-Hartman 2013-08-16 20:40 ` Josh Cartwright 2013-08-16 20:40 ` Josh Cartwright 2013-08-16 20:40 ` Josh Cartwright 2013-08-16 20:50 ` Greg Kroah-Hartman 2013-08-16 20:50 ` Greg Kroah-Hartman 2013-08-16 20:50 ` Greg Kroah-Hartman 2013-08-16 18:49 ` Greg Kroah-Hartman 2013-08-16 18:49 ` Greg Kroah-Hartman 2013-08-16 20:21 ` Josh Cartwright [this message] 2013-08-16 20:21 ` Josh Cartwright 2013-08-16 20:21 ` Josh Cartwright 2013-08-16 20:28 ` Greg Kroah-Hartman 2013-08-16 20:28 ` Greg Kroah-Hartman 2013-08-16 20:28 ` Greg Kroah-Hartman 2013-08-16 19:04 ` Kumar Gala 2013-08-16 19:04 ` Kumar Gala 2013-08-16 19:04 ` Kumar Gala [not found] ` <b639088d50df93caaef8fe7e09c12953b1153ce8.1376596224.git.joshc@codeaurora.org> [not found] ` <D1534646-7CB5-4EE7-8C1E-1C607BE22396@codeaurora.org> 2013-08-16 19:25 ` [PATCH RFC 3/3] spmi: document the PMIC arbiter SPMI bindings Josh Cartwright 2013-08-16 19:25 ` Josh Cartwright 2013-08-16 19:25 ` Josh Cartwright 2013-08-16 19:48 ` Kumar Gala 2013-08-16 19:48 ` Kumar Gala 2013-08-16 19:48 ` Kumar Gala 2013-08-16 23:17 ` Stephen Warren 2013-08-16 23:17 ` Stephen Warren 2013-08-16 23:17 ` Stephen Warren
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=20130816202110.GJ4035@joshc.qualcomm.com \ --to=joshc@codeaurora.org \ --cc=gavidov@codeaurora.org \ --cc=grant.likely@linaro.org \ --cc=gregkh@linuxfoundation.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-arm-msm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mbohan@codeaurora.org \ --cc=rob.herring@calxeda.com \ --cc=sdharia@codeaurora.org \ --subject='Re: [PATCH RFC 1/3] spmi: Linux driver framework for SPMI' \ /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
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.