lkml.org 
[lkml]   [2010]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH -v3] x86: do not free zero sized per cpu areas
    On 03/19/2010 03:18 PM, Yinghai Lu wrote:
    > From: Ian Campbell <ian.campbell@citrix.com>
    >
    > This avoids an infinite loop in free_early_partial().
    >
    > Add a warning to free_early_partial to catch future problems.
    >
    > -v3: according to hpa, don't bother caller.
    >
    > Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
    > Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    > Cc: Peter Zijlstra <peterz@infradead.org>
    > Cc: Ingo Molnar <mingo@elte.hu>
    > ---
    > kernel/early_res.c | 5 +++++
    > 1 files changed, 5 insertions(+), 0 deletions(-)
    >
    > 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)

    No, that's wrong.

    The workaround is still needed for the case of equality to avoid the
    infinite loop.

    So you need an:

    if (start == end)
    return;

    -hpa


    \
     
     \ /
      Last update: 2010-03-19 23:31    [W:0.035 / U:29.508 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site