On 2019-04-10 21:39:34 [-0700], Eric Biggers wrote: > Well, from a quick read of the patch, it's probably because it uses > raw_cpu_ptr() instead of per_cpu_ptr() when allocating/freeing the buffers, so > they are unlikely to actually be allocated for all CPUs.
memory is allocated in crypto_scomp_alloc_scratches() before the algorithm is first used for for_each_possible_cpu. So all CPUs should have it. > Also Sebastian, I don't understand the point of the spinlock. What was wrong > with get_cpu()? Note that taking the spinlock disables preemption too... > Also > now it's possible to spin for a long time on the spinlock, for no reason > really. The long spin is only possible PREEMPT kernel if the context switches the CPU between getting the pointer and acquiring the CPU. Should this really become a problem I could try to think of something. That spin_lock gives us lock annotation and a lock context. With preempt_disable() it is just a BKL like thing with no context. And this basically kills PREEMPT_RT. > - Eric Sebastian
