From: Guenter Roeck <linux@roeck-us.net>
To: Christophe Jaillet <christophe.jaillet@wanadoo.fr>
Cc: jdelvare@suse.com, linux-hwmon@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
Subject: Re: hwmon: (xgene) Fix up error handling path mixup in 'xgene_hwmon_probe()'
Date: Sun, 01 Oct 2017 14:28:33 +0000 [thread overview]
Message-ID: <20171001142833.GA688@roeck-us.net> (raw)
In-Reply-To: <20170923064415.25307-1-christophe.jaillet@wanadoo.fr>
On Sat, Sep 23, 2017 at 08:44:15AM +0200, Christophe Jaillet wrote:
> Commit 2ca492e22cb7 has moved the call to 'kfifo_alloc()' from after the
> main 'if' statement to before it.
> But it has not updated the error handling paths accordingly.
>
> Fix all that:
> - if 'kfifo_alloc()' fails we can return directly
> - direct returns after 'kfifo_alloc()' must now go to 'out_mbox_free'
> - 'goto out_mbox_free' must be replaced by 'goto out', otherwise the
> '[pcc_]mbox_free_channel()' call will be missed.
>
> Fixes: 2ca492e22cb7 ("hwmon: (xgene) Fix crash when alarm occurs before driver probe")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Applied.
Thanks,
Guenter
> ---
> drivers/hwmon/xgene-hwmon.c | 19 +++++++++++--------
> 1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/hwmon/xgene-hwmon.c b/drivers/hwmon/xgene-hwmon.c
> index 9c0dbb8191ad..e1be61095532 100644
> --- a/drivers/hwmon/xgene-hwmon.c
> +++ b/drivers/hwmon/xgene-hwmon.c
> @@ -630,7 +630,7 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
> sizeof(struct slimpro_resp_msg) * ASYNC_MSG_FIFO_SIZE,
> GFP_KERNEL);
> if (rc)
> - goto out_mbox_free;
> + return -ENOMEM;
>
> INIT_WORK(&ctx->workq, xgene_hwmon_evt_work);
>
> @@ -646,7 +646,8 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
> if (IS_ERR(ctx->mbox_chan)) {
> dev_err(&pdev->dev,
> "SLIMpro mailbox channel request failed\n");
> - return -ENODEV;
> + rc = -ENODEV;
> + goto out_mbox_free;
> }
> } else {
> struct acpi_pcct_hw_reduced *cppc_ss;
> @@ -654,7 +655,8 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
> if (device_property_read_u32(&pdev->dev, "pcc-channel",
> &ctx->mbox_idx)) {
> dev_err(&pdev->dev, "no pcc-channel property\n");
> - return -ENODEV;
> + rc = -ENODEV;
> + goto out_mbox_free;
> }
>
> cl->rx_callback = xgene_hwmon_pcc_rx_cb;
> @@ -662,7 +664,8 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
> if (IS_ERR(ctx->mbox_chan)) {
> dev_err(&pdev->dev,
> "PPC channel request failed\n");
> - return -ENODEV;
> + rc = -ENODEV;
> + goto out_mbox_free;
> }
>
> /*
> @@ -675,13 +678,13 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
> if (!cppc_ss) {
> dev_err(&pdev->dev, "PPC subspace not found\n");
> rc = -ENODEV;
> - goto out_mbox_free;
> + goto out;
> }
>
> if (!ctx->mbox_chan->mbox->txdone_irq) {
> dev_err(&pdev->dev, "PCC IRQ not supported\n");
> rc = -ENODEV;
> - goto out_mbox_free;
> + goto out;
> }
>
> /*
> @@ -696,14 +699,14 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
> } else {
> dev_err(&pdev->dev, "Failed to get PCC comm region\n");
> rc = -ENODEV;
> - goto out_mbox_free;
> + goto out;
> }
>
> if (!ctx->pcc_comm_addr) {
> dev_err(&pdev->dev,
> "Failed to ioremap PCC comm region\n");
> rc = -ENOMEM;
> - goto out_mbox_free;
> + goto out;
> }
>
> /*
WARNING: multiple messages have this Message-ID (diff)
From: Guenter Roeck <linux@roeck-us.net>
To: Christophe Jaillet <christophe.jaillet@wanadoo.fr>
Cc: jdelvare@suse.com, linux-hwmon@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
Subject: Re: hwmon: (xgene) Fix up error handling path mixup in 'xgene_hwmon_probe()'
Date: Sun, 1 Oct 2017 07:28:33 -0700 [thread overview]
Message-ID: <20171001142833.GA688@roeck-us.net> (raw)
In-Reply-To: <20170923064415.25307-1-christophe.jaillet@wanadoo.fr>
On Sat, Sep 23, 2017 at 08:44:15AM +0200, Christophe Jaillet wrote:
> Commit 2ca492e22cb7 has moved the call to 'kfifo_alloc()' from after the
> main 'if' statement to before it.
> But it has not updated the error handling paths accordingly.
>
> Fix all that:
> - if 'kfifo_alloc()' fails we can return directly
> - direct returns after 'kfifo_alloc()' must now go to 'out_mbox_free'
> - 'goto out_mbox_free' must be replaced by 'goto out', otherwise the
> '[pcc_]mbox_free_channel()' call will be missed.
>
> Fixes: 2ca492e22cb7 ("hwmon: (xgene) Fix crash when alarm occurs before driver probe")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Applied.
Thanks,
Guenter
> ---
> drivers/hwmon/xgene-hwmon.c | 19 +++++++++++--------
> 1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/hwmon/xgene-hwmon.c b/drivers/hwmon/xgene-hwmon.c
> index 9c0dbb8191ad..e1be61095532 100644
> --- a/drivers/hwmon/xgene-hwmon.c
> +++ b/drivers/hwmon/xgene-hwmon.c
> @@ -630,7 +630,7 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
> sizeof(struct slimpro_resp_msg) * ASYNC_MSG_FIFO_SIZE,
> GFP_KERNEL);
> if (rc)
> - goto out_mbox_free;
> + return -ENOMEM;
>
> INIT_WORK(&ctx->workq, xgene_hwmon_evt_work);
>
> @@ -646,7 +646,8 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
> if (IS_ERR(ctx->mbox_chan)) {
> dev_err(&pdev->dev,
> "SLIMpro mailbox channel request failed\n");
> - return -ENODEV;
> + rc = -ENODEV;
> + goto out_mbox_free;
> }
> } else {
> struct acpi_pcct_hw_reduced *cppc_ss;
> @@ -654,7 +655,8 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
> if (device_property_read_u32(&pdev->dev, "pcc-channel",
> &ctx->mbox_idx)) {
> dev_err(&pdev->dev, "no pcc-channel property\n");
> - return -ENODEV;
> + rc = -ENODEV;
> + goto out_mbox_free;
> }
>
> cl->rx_callback = xgene_hwmon_pcc_rx_cb;
> @@ -662,7 +664,8 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
> if (IS_ERR(ctx->mbox_chan)) {
> dev_err(&pdev->dev,
> "PPC channel request failed\n");
> - return -ENODEV;
> + rc = -ENODEV;
> + goto out_mbox_free;
> }
>
> /*
> @@ -675,13 +678,13 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
> if (!cppc_ss) {
> dev_err(&pdev->dev, "PPC subspace not found\n");
> rc = -ENODEV;
> - goto out_mbox_free;
> + goto out;
> }
>
> if (!ctx->mbox_chan->mbox->txdone_irq) {
> dev_err(&pdev->dev, "PCC IRQ not supported\n");
> rc = -ENODEV;
> - goto out_mbox_free;
> + goto out;
> }
>
> /*
> @@ -696,14 +699,14 @@ static int xgene_hwmon_probe(struct platform_device *pdev)
> } else {
> dev_err(&pdev->dev, "Failed to get PCC comm region\n");
> rc = -ENODEV;
> - goto out_mbox_free;
> + goto out;
> }
>
> if (!ctx->pcc_comm_addr) {
> dev_err(&pdev->dev,
> "Failed to ioremap PCC comm region\n");
> rc = -ENOMEM;
> - goto out_mbox_free;
> + goto out;
> }
>
> /*
next prev parent reply other threads:[~2017-10-01 14:28 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-23 6:44 [PATCH] hwmon: (xgene) Fix up error handling path mixup in 'xgene_hwmon_probe()' Christophe JAILLET
2017-09-23 6:44 ` Christophe JAILLET
2017-10-01 14:28 ` Guenter Roeck [this message]
2017-10-01 14:28 ` Guenter Roeck
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=20171001142833.GA688@roeck-us.net \
--to=linux@roeck-us.net \
--cc=christophe.jaillet@wanadoo.fr \
--cc=jdelvare@suse.com \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.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.