Messages in this thread | | | Date | Fri, 2 Aug 2019 20:49:47 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH 0/6] Rework REFCOUNT_FULL using atomic_fetch_* operations |
| |
On Fri, Aug 02, 2019 at 11:09:54AM +0100, Will Deacon wrote:
> Although the revised implementation passes all of the lkdtm REFCOUNT > tests, there is a race condition introduced by the deferred saturation > whereby if INT_MIN + 2 tasks take a reference on a refcount at > REFCOUNT_MAX and are each preempted between detecting overflow and > writing the saturated value without being rescheduled, then another task > may end up erroneously freeing the object when it drops the refcount and > sees zero. It doesn't feel like a particularly realistic case to me, but > I thought I should mention it in case somebody else knows better.
So my OCD has always found that hole objectionable. Also I suppose the cmpxchg ones are simpler to understand.
Maybe make this fancy stuff depend on !FULL ?
| |