Index: sys/compat/linuxkpi/common/src/linux_rcu.c =================================================================== --- sys/compat/linuxkpi/common/src/linux_rcu.c +++ sys/compat/linuxkpi/common/src/linux_rcu.c @@ -298,6 +298,7 @@ "linux_synchronize_rcu() can sleep"); td = curthread; + DROP_GIANT(); /* * Synchronizing RCU might change the CPU core this function @@ -305,8 +306,6 @@ */ thread_lock(td); - DROP_GIANT(); - old_cpu = PCPU_GET(cpuid); old_pinned = td->td_pinned; old_prio = td->td_priority; Index: sys/kern/subr_epoch.c =================================================================== --- sys/kern/subr_epoch.c +++ sys/kern/subr_epoch.c @@ -610,8 +610,8 @@ KASSERT(!in_epoch(epoch), ("epoch_wait_preempt() called in the middle " "of an epoch section of the same epoch")); #endif - thread_lock(td); DROP_GIANT(); + thread_lock(td); old_cpu = PCPU_GET(cpuid); old_pinned = td->td_pinned;