Hi, We observed a race over kb->ledflagstate and kb->default_ledflagstate when two threads are running vt_do_kdskled() in parallel: Thread-1 Thread-2 // holding led_lock // holding kbd_event_lock kb->ledflagstate = (arg & 7); ucval = kb->ledflagstate | (kb->default_ledflagstate << 4); kb->default_ledflagstate = ((arg >> 4) & 7); Is it better to hold both led_lock and kbd_event_lock under case KDGKBLED? We are happy to submit the patch if it makes sense. Thanks