Messages in this thread | | | From | Linus Torvalds <> | Date | Tue, 7 Dec 2021 08:13:38 -0800 | Subject | Re: [PATCH] block: switch to atomic_t for request references |
| |
On Tue, Dec 7, 2021 at 5:28 AM Peter Zijlstra <peterz@infradead.org> wrote: > > +#define refcount_dec_and_test refcount_dec_and_test > +static inline 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; > +}
Please don't add broken arch-specific helpers that are useless for anything else than the broken refcount_t use.
Make it return three return values, call it atomic_dec_and_test_ref() or something like that, and now people can use it without having to use a refcount_t.
Nobody really wants two different error cases anyway. The fact that refcount_warn_saturate() has different cases is only an annoyance.
Linus
| |