Re: [PATCH] mm/rmap: Convert from atomic_t to refcount_t on anon_vma->refcount

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Aug 20, 2021 at 08:43:40AM +0200, Peter Zijlstra wrote:

> Fine with me; although the immediate complaint from Andrew was about
> size, hence my UD1 hackery.
> 
> > So if we do this, I think it should be something like
> > 
> >    static inline __must_check bool refcount_dec_and_test(refcount_t *r)
> >    {
> >         asm_volatile_goto (LOCK_PREFIX "decl %[var]\n\t"
> >                 "jz %l[cc_zero]\n\t"
> >                 "jl %l[cc_error]"
> >                 : : [var] "m" (r->refs.counter)
> >                 : "memory" : cc_zero, cc_error);
> > 
> >         return false;
> > 
> >    cc_zero:
> >         return true;
> >    cc_error:
> >         refcount_warn_saturate(r, REFCOUNT_SUB_UAF);
> >         return false;
> >    }
> > 
> > and we can discuss whether we could improve on the
> > refcount_warn_saturate() separately.
> 
> I can do the refcount_warn_saturate() change separately.
> 
> Let me go check how small I can get it...

gcc-10.2.1, x86_64-defconfig

kernel/event/core.o-inline-ud1:     96454
kernel/event/core.o-outofline-ud1:  96604
kernel/event/core.o-outofline-call: 97072

(42 refcount_warn_saturate/ud1 instances in that file,
 10 of which are refcount_dec_and_test)




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux