Re: Possible kernel memory leaks

From: Catalin Marinas
Date: Wed May 31 2006 - 09:46:44 EST


Catalin Marinas <catalin.marinas@xxxxxxxxx> wrote:
> There are some possible kernel memory leaks discovered by kmemleak. I
> didn't have time for investigating them. Please let me know if they are
> not leaks so that I can improve kmemleak (or just add a false alarm call):
[...]
> - acpi_ev_execute_reg_method in drivers/acpi/events/evregion.c - I'm not
> sure about this but kmemleak reports an orphan pointer on the following
> allocation path:
> c0159372: <kmem_cache_alloc>
> c01ffa07: <acpi_os_acquire_object>
> c0215b3a: <acpi_ut_allocate_object_desc_dbg>
> c02159ce: <acpi_ut_create_internal_object_dbg>
> c0203784: <acpi_ev_execute_reg_method>
> c0203db4: <acpi_ev_reg_run>
> c020ed17: <acpi_ns_walk_namespace>
> c0203d6b: <acpi_ev_execute_reg_methods>
> Is acpi_ut_remove_reference actually removing the params[0/1]?

After a quick check, the reference counts after the
acpi_ns_evaluate_by_handle() call in acpi_ev_execute_reg_method look
like this (they were both 1 before this call):

params[0]->common.reference_count = 1
params[1]->common.reference_count = 2

and therefore acpi_ut_remove_reference() doesn't free
params[1]. Kmemleak, however, cannot find the params[1] value while
scanning the memory and therefore reports it as a leak.

Is this normal behaviour for the acpi_ev_execute_reg_method function?
There isn't anything obvious looking at the calling tree (which I
would say is pretty complex).

--
Catalin
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/