We iterate over the CPU list quite frequently (e.g. with CPU_FOREACH), but we rarely acquire the cpu_list_lock to do so. This is incorrect, since the CPU list can be updated (new CPUs added to it) pretty much anytime, particularly in user-mode.
Instead of grabbing cpu_list_lock everywhere, convert the list to RCU to that iterations can be safe and wait-free. Thanks, Emilio