Andy Green wrote: > + } while (kbd->hp_irq_count != kbd->hp_irq_count_in_work); [...] > + kbd->work_in_progress = 0; There's a bit of a race condition here: if an interrupt happens just betwen checking and clearing work_in_progress, this interrupt is lost. Do we care ? Chances for this to happen look extremely small. - Werner