Re: [PATCH] mmu notifiers #v7

From: Andrew Morton
Date: Thu Feb 28 2008 - 20:07:50 EST


On Fri, 29 Feb 2008 01:40:01 +0100 Andrea Arcangeli <andrea@xxxxxxxxxxxx> wrote:

> > > +#define mmu_notifier(function, mm, args...) \
> > > + do { \
> > > + struct mmu_notifier *__mn; \
> > > + struct hlist_node *__n; \
> > > + \
> > > + if (unlikely(!hlist_empty(&(mm)->mmu_notifier.head))) { \
> > > + rcu_read_lock(); \
> > > + hlist_for_each_entry_rcu(__mn, __n, \
> > > + &(mm)->mmu_notifier.head, \
> > > + hlist) \
> > > + if (__mn->ops->function) \
> > > + __mn->ops->function(__mn, \
> > > + mm, \
> > > + args); \
> > > + rcu_read_unlock(); \
> > > + } \
> > > + } while (0)
> >
> > Andrew recomended local variables for parameters used multile times. This
> > means the mm parameter here.
>
> I don't exactly see what "buggy macro" meant?

multiple refernces to the argument, so

mmu_notifier(foo, bar(), zot);

will call bar() either once or twice.

Unlikely in this case, but bad practice. Easily fixable by using another
temporary.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/