squash! kernel/smp: Provide CSD lock timeout diagnostics

[ paulmck: Fix for syzbot+0f719294463916a3fc0e@syzkaller.appspotmail.com ]
Link: https://lore.kernel.org/lkml/00000000000042f21905a991ecea@google.com
Link: https://lore.kernel.org/lkml/0000000000002ef21705a9933cf3@google.com
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
diff --git a/kernel/smp.c b/kernel/smp.c
index bde4c15..78b602c 100644
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@ -285,9 +285,9 @@ static int generic_exec_single(int cpu, call_single_data_t *csd)
 		 * We can unlock early even for the synchronous on-stack case,
 		 * since we're doing this from the same CPU..
 		 */
+		csd_lock_record(csd);
 		csd_unlock(csd);
 		local_irq_save(flags);
-		csd_lock_record(csd);
 		func(info);
 		csd_lock_record(NULL);
 		local_irq_restore(flags);