Hi Christopher, Here speakup_con_update() tries to take the speakup_info.spinlock that spk_var_store() already grabbed.. [ 311.320662] value for say_control out of range, expect 0 to 1 [ 311.321038] BUG: spinlock trylock failure on UP on CPU#0, trinity-child0/484 [ 311.321062] lock: speakup_info, .magic: dead4ead, .owner: trinity-child0/484, .owner_cpu: 0 [ 311.321064] Pid: 484, comm: trinity-child0 Not tainted 3.5.0-rc5-01279-ga334b5f #44 [ 311.321065] Call Trace: [ 311.321077] [] spin_dump+0x9c/0xa1 [ 311.321079] [] spin_bug+0x3d/0x3f [ 311.321082] [] do_raw_spin_trylock+0x82/0x8e [ 311.321088] [] _raw_spin_trylock+0x25/0x77 ==> [ 311.321101] [] speakup_con_update+0xd4/0x1c8 [ 311.321103] [] vt_notifier_call+0x757/0x767 [ 311.321115] [] notifier_call_chain+0x32/0x8b [ 311.321118] [] __atomic_notifier_call_chain+0x6f/0x9f [ 311.321120] [] ? atomic_notifier_chain_unregister+0x44/0x44 [ 311.321127] [] ? vgacon_set_cursor_size.isra.2+0x130/0x13d [ 311.321130] [] atomic_notifier_call_chain+0xf/0x11 [ 311.321140] [] notify_update+0x31/0x33 [ 311.321142] [] vt_console_print+0x490/0x4ab [ 311.321150] [] call_console_drivers.constprop.7+0x181/0x19d [ 311.321152] [] console_unlock+0x3b3/0x54a [ 311.321154] [] vprintk_emit+0x5ff/0x6c5 [ 311.321159] [] printk+0x48/0x4a [ 311.321161] [] ? spk_var_store+0x83/0x3aa ==> [ 311.321163] [] spk_var_store+0x14d/0x3aa [ 311.321172] [] ? sysfs_get_active+0x149/0x157 [ 311.321175] [] ? sysfs_write_file+0x15e/0x1dd [ 311.321191] [] kobj_attr_store+0x28/0x34 [ 311.321194] [] sysfs_write_file+0x18e/0x1dd [ 311.321203] [] vfs_write+0x155/0x247 [ 311.321206] [] sys_write+0x54/0x9b [ 311.321210] [] system_call_fastpath+0x16/0x1b Thanks, Fengguang