Merge pull request #10357 from sameehj/km-fixes

Km fixes
This commit is contained in:
Daniel Pouzzner
2026-05-07 14:54:48 -05:00
committed by GitHub
3 changed files with 11 additions and 2 deletions
+2 -1
View File
@@ -1020,7 +1020,8 @@ static int wolfkdriv_process(device_t dev, struct cryptop * crp, int hint)
csp->csp_mode, csp->csp_cipher_alg, error);
#endif /* WOLFSSL_BSDKM_VERBOSE_DEBUG */
return (error);
/* opencrypto(9) contract: return 0 after crypto_done(); error is in crp_etype. */
return (0);
}
/*
+2
View File
@@ -450,6 +450,8 @@
#define memset my_memset
static inline void *my_memmove(void *dest, const void *src, size_t n) {
if (n == 0)
return dest;
if (! (((uintptr_t)dest | (uintptr_t)src | (uintptr_t)n)
& (uintptr_t)(sizeof(uintptr_t) - 1)))
{
+7 -1
View File
@@ -162,16 +162,22 @@ static struct wc_thread_fpu_count_ent *wc_linuxkm_fpu_state_assoc_unlikely(int c
__atomic_store_n(&slot->pid, my_pid, __ATOMIC_RELEASE);
return slot;
} else {
struct pid *slot_pid_struct;
/* if the slot is already occupied, that can be benign-ish due to a
* unwanted migration, or due to a process crashing in kernel mode.
* it will require fixup either here, or by the thread that owns the
* slot, which will happen when it releases its lock.
*/
if (find_get_pid(slot_pid) == NULL) {
slot_pid_struct = find_get_pid(slot_pid);
if (slot_pid_struct == NULL) {
if (__atomic_compare_exchange_n(&slot->pid, &slot_pid, my_pid, 0, __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE)) {
pr_warn("WARNING: wc_linuxkm_fpu_state_assoc_unlikely fixed up orphaned slot on CPU %d owned by dead PID %d.\n", my_cpu, slot_pid);
return slot;
}
} else {
/* drop the refcount bumped by find_get_pid(). */
put_pid(slot_pid_struct);
}
{