>>>>> "David" == David Hinds <firstname.lastname@example.org> writes: David> Looking at ds.c, I do not initialize wait_queue heads to NULL (which David> would be a bad bad thing, for a 2.2 kernel). They are initialized David> with init_waitqueue, though it's a bit non-obvious because of how the David> kernel compatibility stuff is handled in k_compat.h. Oh, I somehow misread it. Ick, it seems I have been out of date quite badly... this would explain why my own character device causes problems. I had just been reading examples from old code and totally missed the current init_waitqueue definition in <linux/wait.h>. Now that you pointed this out, it seems that e.g. drivers/char/pc_keyb.c in 2.2.x kernels initializes its wait_queue head to NULL. Do you think this can cause problems?