lkml.org 
[lkml]   [2021]   [Aug]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] mm/rmap: Convert from atomic_t to refcount_t on anon_vma->refcount
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)

\
 
 \ /
  Last update: 2021-08-20 10:20    [W:0.045 / U:0.052 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site