Messages in this thread | | | Date | Sat, 18 Feb 2012 14:26:10 +0100 | From | Holger Macht <> | Subject | Re: linux-next: dock_link_device is oopsy |
| |
On Sa 18. Feb - 21:05:18, Hillf Danton wrote: > On Sat, Feb 18, 2012 at 7:14 PM, Holger Macht <holger@homac.de> wrote: > > So how about that? > > > > acpi: Bail out when linking devices and there are no dock stations > > > > If dock_station_count is zero, we allocate zero memory and don't check > > this at future references. So bail out if there are actually no dock > > stations. > > > > Signed-off-by: Holger Macht <holger@homac.de> > > --- > > drivers/acpi/dock.c | 19 ++++++++++++++----- > > 1 files changed, 14 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c > > index b5e4142..0b3072c 100644 > > --- a/drivers/acpi/dock.c > > +++ b/drivers/acpi/dock.c > > @@ -281,11 +281,15 @@ EXPORT_SYMBOL_GPL(is_dock_device); > > */ > > struct device **dock_link_device(acpi_handle handle) > > { > > - struct device *dev = acpi_get_physical_device(handle); > > + struct device *dev; > > struct dock_station *dock_station; > > int ret, dock = 0; > > struct device **devices; > > > > + if (!dock_station_count) > > + return NULL; > > + > > + dev = acpi_get_physical_device(handle); > > devices = kmalloc(dock_station_count * sizeof(struct device *), > > GFP_KERNEL); > > > > @@ -320,12 +324,17 @@ EXPORT_SYMBOL_GPL(dock_link_device); > > */ > > struct device **dock_unlink_device(acpi_handle handle) > > { > > - struct device *dev = acpi_get_physical_device(handle); > > + struct device *dev; > > struct dock_station *dock_station; > > int dock = 0; > > - struct device **devices = > > - kmalloc(dock_station_count * sizeof(struct device *), > > - GFP_KERNEL); > > + struct device **devices; > > + > > + if (!dock_station_count) > > + return NULL; > > + > > + dev = acpi_get_physical_device(handle); > > + devices = kmalloc(dock_station_count * sizeof(struct device *), > > + GFP_KERNEL); > > > > If bail out in this way, another patch looks needed to fix up > mem leakage :-(
Sorry if I'm a little slow...but where is the leakage? The function doesn't allocate anything before bailing out in the dock_station_count check. And the rerun value should be freed by the caller. Please point me in the right direction.
Thanks, Holger -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |