On Thursday, June 2, 2016 6:09:08 PM CEST Pan Xinhui wrote: > diff --git a/include/asm-generic/qrwlock.h b/include/asm-generic/qrwlock.h > index 54a8e65..eadd7a3 100644 > --- a/include/asm-generic/qrwlock.h > +++ b/include/asm-generic/qrwlock.h > @@ -139,7 +139,7 @@ static inline void queued_read_unlock(struct qrwlock *lock) > */ > static inline void queued_write_unlock(struct qrwlock *lock) > { > - smp_store_release((u8 *)&lock->cnts, 0); > + (void)atomic_sub_return_release(_QW_LOCKED, &lock->cnts); > } Isn't this more expensive than the existing version? Arnd