Messages in this thread | | | Date | Mon, 6 Jan 2014 14:35:01 -0800 | From | Dmitry Torokhov <> | Subject | Re: [PATCH] PNPBIOS: check return value of pnp_add_device() |
| |
Hi Rafael,
On Sun, Dec 15, 2013 at 04:11:05AM -0800, Dmitry Torokhov wrote: > pnp_add_device() may fail so we need to handle errors and avoid leaking > memory. > > Also, when pnp_alloc_dev fails, return -ENOMEM rather than -1. > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Any issues with this patch and a similar one to PNPACPI?
Thanks!
> --- > drivers/pnp/pnpbios/core.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c > index 9b86a01..074569e 100644 > --- a/drivers/pnp/pnpbios/core.c > +++ b/drivers/pnp/pnpbios/core.c > @@ -312,18 +312,19 @@ static int __init insert_device(struct pnp_bios_node *node) > struct list_head *pos; > struct pnp_dev *dev; > char id[8]; > + int error; > > /* check if the device is already added */ > list_for_each(pos, &pnpbios_protocol.devices) { > dev = list_entry(pos, struct pnp_dev, protocol_list); > if (dev->number == node->handle) > - return -1; > + return -EEXIST; > } > > pnp_eisa_id_to_string(node->eisa_id & PNP_EISA_ID_MASK, id); > dev = pnp_alloc_dev(&pnpbios_protocol, node->handle, id); > if (!dev) > - return -1; > + return -ENOMEM; > > pnpbios_parse_data_stream(dev, node); > dev->active = pnp_is_active(dev); > @@ -342,7 +343,12 @@ static int __init insert_device(struct pnp_bios_node *node) > if (!dev->active) > pnp_init_resources(dev); > > - pnp_add_device(dev); > + error = pnp_add_device(dev); > + if (error) { > + put_device(&dev->dev); > + return error; > + } > + > pnpbios_interface_attach_device(node); > > return 0; > -- > 1.8.3.1 > > > -- > Dmitry
-- Dmitry
| |