2021-02-03 14:45:12

by Dan Carpenter

[permalink] [raw]
Subject: [PATCH] misc: bcm-vk: Fix a couple error codes in probe()

These errors should return negative error codes instead of returning
success.

Fixes: 064ffc7c3939 ("misc: bcm-vk: add autoload support")
Fixes: 522f692686a7 ("misc: bcm-vk: add Broadcom VK driver")
Signed-off-by: Dan Carpenter <[email protected]>
---
drivers/misc/bcm-vk/bcm_vk_dev.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/misc/bcm-vk/bcm_vk_dev.c b/drivers/misc/bcm-vk/bcm_vk_dev.c
index c3d2bba68ef1..a82a8927d92b 100644
--- a/drivers/misc/bcm-vk/bcm_vk_dev.c
+++ b/drivers/misc/bcm-vk/bcm_vk_dev.c
@@ -1358,6 +1358,7 @@ static int bcm_vk_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
vk->bar[i] = pci_ioremap_bar(pdev, i * 2);
if (!vk->bar[i]) {
dev_err(dev, "failed to remap BAR%d\n", i);
+ err = -ENOMEM;
goto err_iounmap;
}
}
@@ -1463,7 +1464,8 @@ static int bcm_vk_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
boot_status = vkread32(vk, BAR_0, BAR_BOOT_STATUS);
if (auto_load) {
if ((boot_status & BOOT_STATE_MASK) == BROM_RUNNING) {
- if (bcm_vk_trigger_autoload(vk))
+ err = bcm_vk_trigger_autoload(vk);
+ if (err)
goto err_bcm_vk_tty_exit;
} else {
dev_err(dev,
--
2.30.0


2021-02-03 19:17:39

by Scott Branden

[permalink] [raw]
Subject: Re: [PATCH] misc: bcm-vk: Fix a couple error codes in probe()

Thanks Dan,

On 2021-02-03 6:42 a.m., Dan Carpenter wrote:
> These errors should return negative error codes instead of returning
> success.
Do you have a script running to report such issues or just manually reviewing
to find such paths?
>
> Fixes: 064ffc7c3939 ("misc: bcm-vk: add autoload support")
> Fixes: 522f692686a7 ("misc: bcm-vk: add Broadcom VK driver")
> Signed-off-by: Dan Carpenter <[email protected]>
Acked-by: Scott Branden <[email protected]>
> ---
> drivers/misc/bcm-vk/bcm_vk_dev.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/misc/bcm-vk/bcm_vk_dev.c b/drivers/misc/bcm-vk/bcm_vk_dev.c
> index c3d2bba68ef1..a82a8927d92b 100644
> --- a/drivers/misc/bcm-vk/bcm_vk_dev.c
> +++ b/drivers/misc/bcm-vk/bcm_vk_dev.c
> @@ -1358,6 +1358,7 @@ static int bcm_vk_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> vk->bar[i] = pci_ioremap_bar(pdev, i * 2);
> if (!vk->bar[i]) {
> dev_err(dev, "failed to remap BAR%d\n", i);
> + err = -ENOMEM;
> goto err_iounmap;
> }
> }
> @@ -1463,7 +1464,8 @@ static int bcm_vk_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> boot_status = vkread32(vk, BAR_0, BAR_BOOT_STATUS);
> if (auto_load) {
> if ((boot_status & BOOT_STATE_MASK) == BROM_RUNNING) {
> - if (bcm_vk_trigger_autoload(vk))
> + err = bcm_vk_trigger_autoload(vk);
> + if (err)
> goto err_bcm_vk_tty_exit;
> } else {
> dev_err(dev,

2021-02-04 01:39:18

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH] misc: bcm-vk: Fix a couple error codes in probe()

On Wed, Feb 03, 2021 at 11:15:35AM -0800, Scott Branden wrote:
> Thanks Dan,
>
> On 2021-02-03 6:42 a.m., Dan Carpenter wrote:
> > These errors should return negative error codes instead of returning
> > success.
> Do you have a script running to report such issues or just manually reviewing
> to find such paths?

Yeah. This is a new Smatch check. The heuristic is this:

<-- ret is not set within 3 lines of the goto
goto label; <-- we hit a goto


return 0; <-- success path right before the cleanup block

label: <-- labels
return ret; <-- This return has to sometimes returns negatives

regards,
dan carpenter