lkml.org 
[lkml]   [2010]   [Mar]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] x86: do not free zero sized per cpu areas
    On 03/05/2010 11:49 AM, Ian Campbell wrote:
    > This avoids an infinite loop in free_early_partial().
    >
    > Add a warning to free_early_partial to catch future problems.
    >
    > Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
    > Cc: Yinghai Lu <yinghai@kernel.org>
    > Cc: Peter Zijlstra <peterz@infradead.org>
    > Cc: Ingo Molnar <mingo@elte.hu>
    > ---
    > arch/x86/kernel/setup_percpu.c | 3 ++-
    > kernel/early_res.c | 5 +++++
    > 2 files changed, 7 insertions(+), 1 deletions(-)
    >
    > diff --git a/arch/x86/kernel/setup_percpu.c b/arch/x86/kernel/setup_percpu.c
    > index ef6370b..89a3205 100644
    > --- a/arch/x86/kernel/setup_percpu.c
    > +++ b/arch/x86/kernel/setup_percpu.c
    > @@ -140,7 +140,8 @@ static void __init pcpu_fc_free(void *ptr, size_t size)
    > #ifdef CONFIG_NO_BOOTMEM
    > u64 start = __pa(ptr);
    > u64 end = start + size;
    > - free_early_partial(start, end);
    > + if (start < end)
    > + free_early_partial(start, end);
    > #else
    > free_bootmem(__pa(ptr), size);
    > #endif
    > diff --git a/kernel/early_res.c b/kernel/early_res.c
    > index 3cb2c66..f3a861b 100644
    > --- a/kernel/early_res.c
    > +++ b/kernel/early_res.c
    > @@ -333,6 +333,11 @@ void __init free_early_partial(u64 start, u64 end)
    > struct early_res *r;
    > int i;
    >
    > + if (WARN_ONCE(start >= end,
    > + "free_early_partial got wrong start/end %#llx/%#llx\n",
    > + start, end))
    > + return;
    > +
    > try_next:
    > i = find_overlapped_early(start, end);
    > if (i >= max_early_res)

    Acked-by: Yinghai Lu <yinghai@kernel.org>


    \
     
     \ /
      Last update: 2010-03-05 20:55    [W:0.023 / U:0.676 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site