On Mon, Nov 21, 2016 at 10:02:23AM +0100, Peter Zijlstra wrote: > 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.
Fair enough ;-) Regards, Boqun
signature.asc
Description: PGP signature