lkml.org 
[lkml]   [2012]   [Feb]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 1/6] oom: Make find_lock_task_mm() sparse-aware
    On Mon, Feb 06, 2012 at 08:29:30PM +0400, Anton Vorontsov wrote:
    > This is needed so that callers would not get 'context imbalance'
    > warnings from the sparse tool.
    >
    > As a side effect, this patch fixes the following sparse warnings:
    >
    > CHECK mm/oom_kill.c
    > mm/oom_kill.c:201:28: warning: context imbalance in 'oom_badness' -
    > unexpected unlock
    > include/linux/rcupdate.h:249:30: warning: context imbalance in
    > 'dump_tasks' - unexpected unlock
    > mm/oom_kill.c:453:9: warning: context imbalance in 'oom_kill_task' -
    > unexpected unlock
    > CHECK mm/memcontrol.c
    > ...
    > mm/memcontrol.c:1130:17: warning: context imbalance in
    > 'task_in_mem_cgroup' - unexpected unlock
    >
    > Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
    > ---
    > include/linux/oom.h | 11 ++++++++++-
    > mm/oom_kill.c | 2 +-
    > 2 files changed, 11 insertions(+), 2 deletions(-)
    >
    > diff --git a/include/linux/oom.h b/include/linux/oom.h
    > index 552fba9..e64bfd2 100644
    > --- a/include/linux/oom.h
    > +++ b/include/linux/oom.h
    > @@ -21,6 +21,7 @@
    >
    > #ifdef __KERNEL__
    >
    > +#include <linux/compiler.h>
    > #include <linux/sched.h>
    > #include <linux/types.h>
    > #include <linux/nodemask.h>
    > @@ -65,7 +66,15 @@ static inline void oom_killer_enable(void)
    > oom_killer_disabled = false;
    > }
    >
    > -extern struct task_struct *find_lock_task_mm(struct task_struct *p);
    > +extern struct task_struct *__find_lock_task_mm(struct task_struct *p);
    > +
    > +#define find_lock_task_mm(p) \
    > +({ \
    > + struct task_struct *__ret; \
    > + \
    > + __cond_lock(&(p)->alloc_lock, __ret = __find_lock_task_mm(p)); \
    > + __ret; \
    > +})

    Please use the proper "do...while" style thing here for multi-line,
    complex #defines like the rest of the kernel does so that you don't end
    up debugging horrible problems later.

    And I would need acks from the -mm developers before I could apply any
    of this.

    thanks,

    greg k-h


    \
     
     \ /
      Last update: 2012-02-06 17:39    [W:0.024 / U:148.052 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site