synchronize_kernel();
synchronize_sched();
static void atkbd_disconnect(struct serio *serio){	struct atkbd *atkbd = serio_get_drvdata(serio);	atkbd_disable(atkbd);	/* make sure we don't have a command in flight */	synchronize_kernel();	flush_scheduled_work();	device_remove_file(&serio->dev, &atkbd_attr_extra);	device_remove_file(&serio->dev, &atkbd_attr_scroll);	device_remove_file(&serio->dev, &atkbd_attr_set);	device_remove_file(&serio->dev, &atkbd_attr_softrepeat);	device_remove_file(&serio->dev, &atkbd_attr_softraw);	input_unregister_device(&atkbd->dev);	serio_close(serio);	serio_set_drvdata(serio, NULL);	kfree(atkbd);}