lkml.org 
[lkml]   [2007]   [Jul]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] Fix uninitialized local variable "covered" in i386 acpi-cpufreq driver
    On Thu, 26 Jul 2007 16:46:30 -0700 Fenghua Yu <fenghua.yu@intel.com> wrote:

    > The local variable "covered" is used without initialization in i386 acpi-cpufreq
    > driver. The initial value of covered should be 0. The bug will cause memory leak
    > when hit. The following patch fixes this bug.
    >
    > Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    >
    > ---
    >
    > arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c | 2 +-
    > 1 files changed, 1 insertion(+), 1 deletion(-)
    >
    > diff --git a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
    > index 6f846be..bfb4959 100644
    > --- a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
    > +++ b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
    > @@ -511,7 +511,7 @@ acpi_cpufreq_guess_freq(struct acpi_cpufreq_data *data, unsigned int cpu)
    > static int acpi_cpufreq_early_init(void)
    > {
    > struct acpi_processor_performance *data;
    > - cpumask_t covered;
    > + cpumask_t covered=0;
    > unsigned int i, j;
    >
    > dprintk("acpi_cpufreq_early_init\n");

    - please put spaces around "="

    - that should have been CPU_MASK_NONE

    - that code's way overengineered. This:

    --- a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c~a
    +++ a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
    @@ -511,7 +511,6 @@ acpi_cpufreq_guess_freq(struct acpi_cpuf
    static int acpi_cpufreq_early_init(void)
    {
    struct acpi_processor_performance *data;
    - cpumask_t covered;
    unsigned int i, j;

    dprintk("acpi_cpufreq_early_init\n");
    @@ -520,14 +519,13 @@ static int acpi_cpufreq_early_init(void)
    data = kzalloc(sizeof(struct acpi_processor_performance),
    GFP_KERNEL);
    if (!data) {
    - for_each_cpu_mask(j, covered) {
    + for_each_possible_cpu(j) {
    kfree(acpi_perf_data[j]);
    acpi_perf_data[j] = NULL;
    }
    return -ENOMEM;
    }
    acpi_perf_data[i] = data;
    - cpu_set(i, covered);
    }

    /* Do initialization in ACPI core */
    _
    should do the trick (please check it)

    - what we have here is an open-coded alloc_percpu(). Hows about
    converting it to alloc_percpu()?

    - that function should have been be __init.


    How's that for a one-liner? ;)
    -
    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/

    \
     
     \ /
      Last update: 2007-07-27 02:15    [W:0.030 / U:2.748 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site