2017-07-31 15:57:28

by Anton Vasilyev

[permalink] [raw]
Subject: [PATCH] misc: Return error on error path

If ibmasm_event_buffer_init() or ibmasm_heartbeat_init() fails,
then ibmasm_init_one() release all resources and return 0 on error path.

The patch adds corresponding error for fails.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Anton Vasilyev <[email protected]>
---
drivers/misc/ibmasm/module.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/misc/ibmasm/module.c b/drivers/misc/ibmasm/module.c
index c5a456b..ba76405 100644
--- a/drivers/misc/ibmasm/module.c
+++ b/drivers/misc/ibmasm/module.c
@@ -96,11 +96,13 @@ static int ibmasm_init_one(struct pci_dev *pdev, const struct pci_device_id *id)

if (ibmasm_event_buffer_init(sp)) {
dev_err(sp->dev, "Failed to allocate event buffer\n");
+ result = -ENOMEM;
goto error_eventbuffer;
}

if (ibmasm_heartbeat_init(sp)) {
dev_err(sp->dev, "Failed to allocate heartbeat command\n");
+ result = -ENOMEM;
goto error_heartbeat;
}

--
2.7.4


2017-07-31 16:25:20

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH] misc: Return error on error path

On Mon, Jul 31, 2017 at 6:48 PM, Anton Vasilyev <[email protected]> wrote:
> If ibmasm_event_buffer_init() or ibmasm_heartbeat_init() fails,
> then ibmasm_init_one() release all resources and return 0 on error path.
>
> The patch adds corresponding error for fails.
>
> Found by Linux Driver Verification project (linuxtesting.org).

To me looks better to

- return 1;
+ return -ENOMEM;

in event.c, and then...

> if (ibmasm_event_buffer_init(sp)) {
> dev_err(sp->dev, "Failed to allocate event buffer\n");
> + result = -ENOMEM;
> goto error_eventbuffer;
> }

result = ibmasm_event_buffer_init(sp);
if (result) {
...
}

> if (ibmasm_heartbeat_init(sp)) {
> dev_err(sp->dev, "Failed to allocate heartbeat command\n");
> + result = -ENOMEM;
> goto error_heartbeat;
> }

Ditto.

--
With Best Regards,
Andy Shevchenko