All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Stephen Boyd <sboyd@codeaurora.org>,
	Mike Turquette <mturquette@baylibre.com>
Cc: linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Lee Jones <lee.jones@linaro.org>,
	Russell King <linux@arm.linux.org.uk>
Subject: Re: [PATCH 01/14] mfd: intel_quark_i2c_gpio: Use clkdev_create()
Date: Mon, 15 Feb 2016 17:14:06 +0200	[thread overview]
Message-ID: <1455549246.31169.125.camel@linux.intel.com> (raw)
In-Reply-To: <1454982341-22715-2-git-send-email-sboyd@codeaurora.org>

On Mon, 2016-02-08 at 17:45 -0800, Stephen Boyd wrote:
> Convert this driver to use clkdev_create() instead of
> clk_register_clkdevs(). The latter API is only used by this driver,
> although this driver only allocates one clk to add anyway.
> Furthermore, this driver allocates the clk_lookup structure with
> devm, but clkdev_drop() will free that structure when passed,
> leading to a double free when this driver is removed. Clean it
> all up and pave the way for the removal of clk_register_clkdevs().

Good one.

I have still in my local tree the fix regarding to this code since I
found an error in the error path (we don't free clk resources). So, I
will re-base it, although it will require to go with two patches
instead of one if we go to stable.

For this one:
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

> 
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: Russell King <linux@arm.linux.org.uk>
> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
> ---
>  drivers/mfd/intel_quark_i2c_gpio.c | 26 +++++++++-----------------
>  1 file changed, 9 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/mfd/intel_quark_i2c_gpio.c
> b/drivers/mfd/intel_quark_i2c_gpio.c
> index 042137465300..bdc5e27222c0 100644
> --- a/drivers/mfd/intel_quark_i2c_gpio.c
> +++ b/drivers/mfd/intel_quark_i2c_gpio.c
> @@ -52,8 +52,6 @@
>  /* The Quark I2C controller source clock */
>  #define INTEL_QUARK_I2C_CLK_HZ	33000000
>  
> -#define INTEL_QUARK_I2C_NCLK	1
> -
>  struct intel_quark_mfd {
>  	struct pci_dev		*pdev;
>  	struct clk		*i2c_clk;
> @@ -128,30 +126,24 @@ MODULE_DEVICE_TABLE(pci, intel_quark_mfd_ids);
>  static int intel_quark_register_i2c_clk(struct intel_quark_mfd
> *quark_mfd)
>  {
>  	struct pci_dev *pdev = quark_mfd->pdev;
> -	struct clk_lookup *i2c_clk_lookup;
>  	struct clk *i2c_clk;
> -	int ret;
> -
> -	i2c_clk_lookup = devm_kcalloc(&pdev->dev,
> INTEL_QUARK_I2C_NCLK,
> -				      sizeof(*i2c_clk_lookup),
> GFP_KERNEL);
> -	if (!i2c_clk_lookup)
> -		return -ENOMEM;
> -
> -	i2c_clk_lookup[0].dev_id = INTEL_QUARK_I2C_CONTROLLER_CLK;
>  
>  	i2c_clk = clk_register_fixed_rate(&pdev->dev,
>  					  INTEL_QUARK_I2C_CONTROLLER
> _CLK, NULL,
>  					  CLK_IS_ROOT,
> INTEL_QUARK_I2C_CLK_HZ);
> +	if (IS_ERR(i2c_clk))
> +		return PTR_ERR(i2c_clk);
>  
> -	quark_mfd->i2c_clk_lookup = i2c_clk_lookup;
>  	quark_mfd->i2c_clk = i2c_clk;
> +	quark_mfd->i2c_clk_lookup = clkdev_create(i2c_clk, NULL,
> +						INTEL_QUARK_I2C_CONT
> ROLLER_CLK);
>  
> -	ret = clk_register_clkdevs(i2c_clk, i2c_clk_lookup,
> -				   INTEL_QUARK_I2C_NCLK);
> -	if (ret)
> -		dev_err(&pdev->dev, "Fixed clk register failed:
> %d\n", ret);
> +	if (!quark_mfd->i2c_clk_lookup) {
> +		dev_err(&pdev->dev, "Fixed clk register failed\n");
> +		return -ENOMEM;
> +	}
>  
> -	return ret;
> +	return 0;
>  }
>  
>  static void intel_quark_unregister_i2c_clk(struct pci_dev *pdev)

-- 
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy


WARNING: multiple messages have this Message-ID (diff)
From: andriy.shevchenko@linux.intel.com (Andy Shevchenko)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 01/14] mfd: intel_quark_i2c_gpio: Use clkdev_create()
Date: Mon, 15 Feb 2016 17:14:06 +0200	[thread overview]
Message-ID: <1455549246.31169.125.camel@linux.intel.com> (raw)
In-Reply-To: <1454982341-22715-2-git-send-email-sboyd@codeaurora.org>

On Mon, 2016-02-08 at 17:45 -0800, Stephen Boyd wrote:
> Convert this driver to use clkdev_create() instead of
> clk_register_clkdevs(). The latter API is only used by this driver,
> although this driver only allocates one clk to add anyway.
> Furthermore, this driver allocates the clk_lookup structure with
> devm, but clkdev_drop() will free that structure when passed,
> leading to a double free when this driver is removed. Clean it
> all up and pave the way for the removal of clk_register_clkdevs().

Good one.

I have still in my local tree the fix regarding to this code since I
found an error in the error path (we don't free clk resources). So, I
will re-base it, although it will require to go with two patches
instead of one if we go to stable.

For this one:
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

> 
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: Russell King <linux@arm.linux.org.uk>
> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
> ---
> ?drivers/mfd/intel_quark_i2c_gpio.c | 26 +++++++++-----------------
> ?1 file changed, 9 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/mfd/intel_quark_i2c_gpio.c
> b/drivers/mfd/intel_quark_i2c_gpio.c
> index 042137465300..bdc5e27222c0 100644
> --- a/drivers/mfd/intel_quark_i2c_gpio.c
> +++ b/drivers/mfd/intel_quark_i2c_gpio.c
> @@ -52,8 +52,6 @@
> ?/* The Quark I2C controller source clock */
> ?#define INTEL_QUARK_I2C_CLK_HZ	33000000
> ?
> -#define INTEL_QUARK_I2C_NCLK	1
> -
> ?struct intel_quark_mfd {
> ?	struct pci_dev		*pdev;
> ?	struct clk		*i2c_clk;
> @@ -128,30 +126,24 @@ MODULE_DEVICE_TABLE(pci, intel_quark_mfd_ids);
> ?static int intel_quark_register_i2c_clk(struct intel_quark_mfd
> *quark_mfd)
> ?{
> ?	struct pci_dev *pdev = quark_mfd->pdev;
> -	struct clk_lookup *i2c_clk_lookup;
> ?	struct clk *i2c_clk;
> -	int ret;
> -
> -	i2c_clk_lookup = devm_kcalloc(&pdev->dev,
> INTEL_QUARK_I2C_NCLK,
> -				??????sizeof(*i2c_clk_lookup),
> GFP_KERNEL);
> -	if (!i2c_clk_lookup)
> -		return -ENOMEM;
> -
> -	i2c_clk_lookup[0].dev_id = INTEL_QUARK_I2C_CONTROLLER_CLK;
> ?
> ?	i2c_clk = clk_register_fixed_rate(&pdev->dev,
> ?					??INTEL_QUARK_I2C_CONTROLLER
> _CLK, NULL,
> ?					??CLK_IS_ROOT,
> INTEL_QUARK_I2C_CLK_HZ);
> +	if (IS_ERR(i2c_clk))
> +		return PTR_ERR(i2c_clk);
> ?
> -	quark_mfd->i2c_clk_lookup = i2c_clk_lookup;
> ?	quark_mfd->i2c_clk = i2c_clk;
> +	quark_mfd->i2c_clk_lookup = clkdev_create(i2c_clk, NULL,
> +						INTEL_QUARK_I2C_CONT
> ROLLER_CLK);
> ?
> -	ret = clk_register_clkdevs(i2c_clk, i2c_clk_lookup,
> -				???INTEL_QUARK_I2C_NCLK);
> -	if (ret)
> -		dev_err(&pdev->dev, "Fixed clk register failed:
> %d\n", ret);
> +	if (!quark_mfd->i2c_clk_lookup) {
> +		dev_err(&pdev->dev, "Fixed clk register failed\n");
> +		return -ENOMEM;
> +	}
> ?
> -	return ret;
> +	return 0;
> ?}
> ?
> ?static void intel_quark_unregister_i2c_clk(struct pci_dev *pdev)

-- 
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy

  parent reply	other threads:[~2016-02-15 15:13 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-09  1:45 [PATCH 00/14] clk_hw based clkdev/DT providers Stephen Boyd
2016-02-09  1:45 ` Stephen Boyd
2016-02-09  1:45 ` [PATCH 01/14] mfd: intel_quark_i2c_gpio: Use clkdev_create() Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-10 16:23   ` Lee Jones
2016-02-10 16:23     ` Lee Jones
2016-02-10 18:35     ` Stephen Boyd
2016-02-10 18:35       ` Stephen Boyd
2016-02-11  9:09       ` Lee Jones
2016-02-11  9:09         ` Lee Jones
2016-02-11 11:08   ` Lee Jones
2016-02-11 11:08     ` Lee Jones
2016-02-15 15:14   ` Andy Shevchenko [this message]
2016-02-15 15:14     ` Andy Shevchenko
2016-02-15 22:13   ` Michael Turquette
2016-02-15 22:13     ` Michael Turquette
2016-02-15 22:13     ` Michael Turquette
2016-02-09  1:45 ` [PATCH 02/14] clkdev: Remove clk_register_clkdevs() Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-15 15:16   ` Andy Shevchenko
2016-02-15 15:16     ` Andy Shevchenko
2016-02-15 22:12   ` Michael Turquette
2016-02-15 22:12     ` Michael Turquette
2016-02-15 22:12     ` Michael Turquette
2016-02-09  1:45 ` [PATCH 03/14] clk: Add {devm_}clk_hw_{register,unregister}() APIs Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-15 22:13   ` Michael Turquette
2016-02-15 22:13     ` Michael Turquette
2016-02-15 22:13     ` [PATCH 03/14] clk: Add {devm_}clk_hw_{register, unregister}() APIs Michael Turquette
2016-02-09  1:45 ` [PATCH 04/14] clk: Add clk_hw OF clk providers Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-09  3:31   ` kbuild test robot
2016-02-09  3:31     ` kbuild test robot
2016-02-09  1:45 ` [PATCH 05/14] clkdev: Add clk_hw based registration APIs Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-09  1:45 ` [PATCH 06/14] clk: divider: Add hw " Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-09  1:45 ` [PATCH 07/14] clk: gate: " Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-09  1:45 ` [PATCH 08/14] clk: mux: " Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-09  1:45 ` [PATCH 09/14] clk: fixed-factor: " Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-09  1:45 ` [PATCH 10/14] clk: fractional-divider: " Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-09  1:45 ` [PATCH 11/14] clk: composite: " Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-09  1:45 ` [PATCH 12/14] clk: gpio: " Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-09  1:45 ` [PATCH 13/14] clk: fixed-rate: " Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-09  1:45 ` [PATCH 14/14] clk: qcom: Migrate to clk_hw based registration and OF APIs Stephen Boyd
2016-02-09  1:45   ` Stephen Boyd
2016-02-09  5:30   ` kbuild test robot
2016-02-09  5:30     ` kbuild test robot
2016-02-09  8:01   ` kbuild test robot
2016-02-09  8:01     ` kbuild test robot

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=1455549246.31169.125.camel@linux.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mturquette@baylibre.com \
    --cc=sboyd@codeaurora.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.