zfs/module/icp
Richard Yao e949d36040
Fix assertions in crypto reference helpers
The assertions are racy and the use of `membar_exit()` did nothing to
fix that.

The helpers use atomic functions, so we cleverly get values from the
atomics that we can use to ensure that the assertions operate on the
correct values.

We also use `membar_producer()` prior to decrementing reference counts
so that operations that happened prior to a decrement to 0 will be
guaranteed to happen before the decrement on architectures that reorder
atomics.

This also slightly improves performance by eliminating unnecessary
reads, although I doubt it would be measurable in any benchmark.

Reviewed-by: Mateusz Guzik <mjguzik@gmail.com>
Signed-off-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Closes #13880
2022-09-15 13:24:00 -07:00
..
algs Fix build on FreeBSD/powerpc64* 2022-09-08 10:27:25 -07:00
api Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
asm-aarch64/blake3 Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
asm-ppc64/blake3 Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
asm-x86_64 Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
core Fix use-after-free bugs in icp code 2022-09-15 11:46:42 -07:00
include Fix assertions in crypto reference helpers 2022-09-15 13:24:00 -07:00
io Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
spi Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
illumos-crypto.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00