On Mon, Nov 08, 2010 at 02:45:00PM -0700, Bjorn Helgaas wrote: > On Thursday, November 04, 2010 11:39:30 am Dmitry Torokhov wrote: > > pnp_add_device() may fail so we need to handle errors and avoid leaking > > memory. Also, do not use ACPI-specific return codes (AE_OK) but rather > > standard ones. > > I think this is generally a good thing. You probably found this by > inspection, but if there's a bug report, please include the URL. I am not aware of an existing bug report,I just happened to look into the code in question... > > Would you consider fixing the similar leaks and failure path issues > in isapnp and pnpbios at the same time? -ENOTIME at the moment ;( The only reason I happened to look into PNP code is that issue with HID strings exceeding 8 characters. > > > Signed-off-by: Dmitry Torokhov <dtor@xxxxxxx> > > --- > > > > drivers/pnp/pnpacpi/core.c | 13 ++++++++++--- > > 1 files changed, 10 insertions(+), 3 deletions(-) > > > > > > diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c > > index 2d73dfc..06ee06c 100644 > > --- a/drivers/pnp/pnpacpi/core.c > > +++ b/drivers/pnp/pnpacpi/core.c > > @@ -194,8 +194,9 @@ static char *pnpacpi_get_id(struct acpi_device *device) > > > > static int __init pnpacpi_add_device(struct acpi_device *device) > > { > > - acpi_handle temp = NULL; > > + acpi_handle temp; > > acpi_status status; > > + int error; > > struct pnp_dev *dev; > > char *pnpid; > > struct acpi_hardware_id *id; > > @@ -256,10 +257,16 @@ static int __init pnpacpi_add_device(struct acpi_device *device) > > /* clear out the damaged flags */ > > if (!dev->active) > > pnp_init_resources(dev); > > - pnp_add_device(dev); > > + > > + error = pnp_add_device(dev); > > + if (error) { > > + put_device(&dev->dev); > > + return error; > > + } > > + > > num++; > > > > - return AE_OK; > > + return 0; > > The acpi_get_devices() usage of pnpacpi_add_device() expects an > acpi_status return value, so maybe we should leave this same and > change the pnpacpi_add_device() return type from > "int" to "acpi_status"? PNPACPI calls acpi_get_devices() with pnpacpi_add_device_handler() which returns proper type (acpi_status). Thanks. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html