[PATCH 0/5] Fix rhashtable bit-locking for m68k

From: NeilBrown
Date: Thu Apr 11 2019 - 21:52:33 EST


As reported by Guenter Roeck, the new rhashtable bit-locking
doesn't work on m68k as it only requires 2-byte alignment, so BIT(1)
is addresses is not unused.

We current use BIT(0) to identify a NULLS marker, but that is only
needed in ->next pointers. The bucket head does not need a NULLS
marker, so the lsb there can be used for locking.

the first 4 patches make some small improvements and re-arrange some
code. The final patch converts to using only BIT(0) for these two
different special purposes.

I had previously suggested dropping the series until I fix it. Given
that this was fairly easy, I retract that I think it best simply to
add these patches to fix the code.

Thanks,
NeilBrown

---

NeilBrown (5):
rhashtable: fix some __rcu annotation errors
rhashtable: reorder some inline functions and macros.
rhashtable: move dereference inside rht_ptr()
rhashtable: replace rht_ptr_locked() with rht_assign_locked()
rhashtable: use BIT(0) for locking.


include/linux/rhashtable.h | 226 +++++++++++++++++++++++++-------------------
lib/rhashtable.c | 24 ++---
lib/test_rhashtable.c | 2
3 files changed, 142 insertions(+), 110 deletions(-)

--
Signature