On Mon, Nov 21, 2016 at 04:44:28PM +0800, Boqun Feng wrote: > On Fri, Nov 18, 2016 at 12:37:18PM +0100, Peter Zijlstra wrote: > [snip] > > + > > +/* > > + * Similar to atomic_inc(), will saturate at UINT_MAX and WARN. > > + * > > + * Provides no memory ordering, it is assumed the caller already has a > > + * reference on the object, will WARN when this is not so. > > + */ > > +static inline void refcount_inc(refcount_t *r) > > +{ > > + unsigned int old, new, val = atomic_read(&r->refs); > > + > > + for (;;) { > > + WARN(!val, "refcount_t: increment on 0; use-after-free.\n"); > > + > > Do we want to put the address of @r into the WARN information? Which > could help us locate the problematic object quickly.
I explicitly didn't do that because printing kernel addresses is generally frowned upon. Also, random heap addresses are just that, random. In most cases the backtrace is more informative.