mirror of
https://github.com/torvalds/linux.git
synced 2026-10-28 17:55:02 +01:00
The slot lock is a bit operation on the whole __lock word, which flags and
ac_time alias as two u32s. On little-endian the lock bit lands in the
position ZRAM_ENTRY_LOCK reserves in flags, so the aliasing works out. On
64-bit big-endian it lands in ac_time instead: with
ZRAM_TRACK_ENTRY_ACTIME enabled, storing the access time from
mark_slot_accessed() or slot_free() wipes out the held lock bit, letting
another CPU take the same slot lock; an access time value with that bit
set makes the slot look locked forever.
Shift the lock bit into the flags half of the word on big-endian 64-bit.
Link: https://lore.kernel.org/20260810202241.2436603-1-devnexen@gmail.com
Fixes:
|
||
|---|---|---|
| .. | ||
| backend_842.c | ||
| backend_842.h | ||
| backend_deflate.c | ||
| backend_deflate.h | ||
| backend_lz4.c | ||
| backend_lz4.h | ||
| backend_lz4hc.c | ||
| backend_lz4hc.h | ||
| backend_lzo.c | ||
| backend_lzo.h | ||
| backend_lzorle.c | ||
| backend_lzorle.h | ||
| backend_zstd.c | ||
| backend_zstd.h | ||
| Kconfig | ||
| Makefile | ||
| zcomp.c | ||
| zcomp.h | ||
| zram_drv.c | ||
| zram_drv.h | ||