The two calls to unpend a thread from a wait queue were inexplicably* unsynchronized, as James Harris discovered. Rework them to call the lowest level primities so we can wrap the process inside the scheduler lock. Fixes #32136 * I took a brief look. What seems to have happened here is that these were originally synchronized via an implicit from an outer caller (remember the original Uniprocessor irq_lock() API is a recursive lock), and they were mostly implemented in terms of middle-level calls that were themselves locked. So those got ported over to the newer spinlock but the outer wrapper layer got forgotten. Signed-off-by: Andy Ross <andrew.j.ross@intel.com> |
||
|---|---|---|
| .. | ||
| gen_offset.h | ||
| kernel_arch_interface.h | ||
| kernel_internal.h | ||
| kernel_offsets.h | ||
| kernel_tls.h | ||
| ksched.h | ||
| kswap.h | ||
| mmu.h | ||
| offsets_short.h | ||