Messages in this thread | | | From | KOSAKI Motohiro <> | Date | Mon, 6 Feb 2012 16:33:26 -0500 | Subject | Re: [PATCH 2/6] oom: Get rid of sparse warnings |
| |
2012/2/6 Anton Vorontsov <anton.vorontsov@linaro.org>: > Sparse flood makes it hard to catch newly-introduced warnings. So let's > fix the the sparse warnings in the oom killer: > > CHECK mm/oom_kill.c > mm/oom_kill.c:139:20: warning: context imbalance in > '__find_lock_task_mm' - wrong count at exit > mm/oom_kill.c:771:9: warning: context imbalance in 'out_of_memory' - > different lock contexts for basic block > > The first one is fixed by assuring sparse that we know that we exit > with the lock held. > > The second one is caused by the fact that sparse isn't smart enough > to handle noreturn attribute. > > Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org> > --- > mm/oom_kill.c | 9 ++++++++- > 1 files changed, 8 insertions(+), 1 deletions(-) > > diff --git a/mm/oom_kill.c b/mm/oom_kill.c > index 0ebb383..49569b6 100644 > --- a/mm/oom_kill.c > +++ b/mm/oom_kill.c > @@ -142,8 +142,14 @@ struct task_struct *__find_lock_task_mm(struct task_struct *p) > > do { > task_lock(t); > - if (likely(t->mm)) > + if (likely(t->mm)) { > + /* > + * Shut up sparse: we do know that we exit w/ the > + * task locked. > + */ > + __release(&t->alloc_loc);
task struct only have allock_lock, not alloc_loc. Moreover we don't release the lock in this code path. Seems odd.
> return t; > + } > task_unlock(t); > } while_each_thread(p, t); > > @@ -766,6 +772,7 @@ retry: > dump_header(NULL, gfp_mask, order, NULL, mpol_mask); > read_unlock(&tasklist_lock); > panic("Out of memory and no killable processes...\n"); > + return; > } > > if (oom_kill_process(p, gfp_mask, order, points, totalpages, NULL, > -- > 1.7.7.6 > -- 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/
| |